Hallo kann mir jemand eine elegante Art nennen um einen 32 bit Wert in einen array von vier mal 8 bit abzulegen?
In c ich weis nicht wie ich den 32 bit Wert am besten in 8 bit Werte aufsplitte.
Ich hab' zwar von "C" keine große Ahnung, aber so - oder so ähnlich - sollte es funktionieren: v0 = (value32 >> 24); v1 = (value32 >> 16) & 0xFF; v2 = (value32 >> 8) & 0xFF; v3 = value32 & 0xFF;
wie wäre es mit:
1 | typedef union { |
2 | uint8_t Teile[4]; |
3 | uint32_t Ganzes; |
4 | } splitting; |
Dann kannst du in das "Ganze" schrieben und die "Teile" lesen oder umgekehrt.
Union:
1 | #include <stdio.h> |
2 | #include <inttypes.h> |
3 | |
4 | typedef union |
5 | {
|
6 | uint8_t b[4]; |
7 | uint32_t i; |
8 | } foo_t; |
9 | |
10 | int main(void) |
11 | {
|
12 | foo_t bar; |
13 | bar.i = 0x12345678; |
14 | printf ("0x %x %x %x %x\n", bar.b[3], bar.b[2], bar.b[1], bar.b[0]); |
15 | /* Ergebnis: 0x 12 34 56 78 */
|
16 | return 0; |
17 | }
|
Edit: Mist, zu langsam.
Nein, das ist undefined behaviour. ernst hat gezeigt, wie es richtig geht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.