Hallo, kann mir jemand bitte zeigen, wie ich ein uint32 in 4 Byte darstellen kann. Danke im Voraus
1 | typedef union asdfgh |
2 | {
|
3 | uint32 b_32; |
4 | uint8 b_8[4]; |
5 | } uint32_array; |
6 | |
7 | -------------------
|
8 | |
9 | uint32_array test; |
10 | test.b_32=0x12345678; |
11 | printf("%x %x %x %x",test.b_8[0],test.b_8[1],test.b_8[2],test.b_8[3]); |
Besser ist folgende Variante:
1 | uint32_t Value = 0xDEADBEEFUL; |
2 | uint8_t LL, LH, HL, HH; |
3 | |
4 | LL = (uint8_t) (Value >> 0); |
5 | LH = (uint8_t) (Value >> 8); |
6 | HL = (uint8_t) (Value >> 16); |
7 | HH = (uint8_t) (Value >> 24); |
Und was ist daran besser? Portierbar ist sowas auch nicht; auf einem PPC liefert das ganz andere Ergebnisse als auf einem IA32. Stichwort "Endianness".
Danke für die Antwort, beide Lösungen funktionieren super. Ist es für die SIGNED Darstellung auch richtig? Also wenn ich statt uint32 int32 verwende. Danke
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.