Forum: Mikrocontroller und Digitale Elektronik uint32_zu_4Byte


von Name N. (mar75)


Lesenswert?

Hallo,

kann mir jemand bitte zeigen, wie ich ein uint32 in 4 Byte darstellen 
kann.


Danke im Voraus

von *.* (Gast)


Lesenswert?

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]);

von Simon K. (simon) Benutzerseite


Lesenswert?

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);

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Und was ist daran besser? Portierbar ist sowas auch nicht; auf einem 
PPC liefert das ganz andere Ergebnisse als auf einem IA32. Stichwort 
"Endianness".

von *.* (Gast)


Lesenswert?

Sieht irgendwie unordentlicher aus...

von Name N. (mar75)


Lesenswert?

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
Noch kein Account? Hier anmelden.