Forum: Mikrocontroller und Digitale Elektronik Union 4x8 Bit = 32 Bit


von mila (Gast)


Lesenswert?

Hallo,

es ist vermutlich eine Anfängerfrage, aber trotzdem...

Ich habe ein Union der Form:
1
union convert
2
    {
3
    UINT8 Bytes[4];
4
    UINT32 Value;
5
    }convertVar;

Weiterhin habe ich ein unsigned char tabx[4];
der Form:
1
unsigned char tabx[4];
2
tabx[0]=0x00;
3
tabx[1]=0x01;
4
tabx[2]=0x02;
5
tabx[3]=0x00;

Über
1
unsigned int X;
2
convertVar.Bytes[0] = tabx[0];
3
convertVar.Bytes[1] = tabx[1];
4
convertVar.Bytes[2] = tabx[2];
5
convertVar.Bytes[3] = tabx[3];
6
X = convertVar.Value;

Ich würde erwarten, dass X jetzt gleich 120 ist. Dies ist aber mit 
nichten der Fall.

Wo ist hier der vermutlich dumme Denkfehler?

von Karl H. (kbuchegg)


Lesenswert?

mila schrieb:

> Ich würde erwarten, dass X jetzt gleich 120 ist.

Wieso würdest du das erwarten?

> Dies ist aber mit
> nichten der Fall.
>
> Wo ist hier der vermutlich dumme Denkfehler?

Das 'Text'darstellung und Binärdarstellung 2 verschiedene Paar Schuhe 
sind.

Du versuchst dem µC dein Dezimalsystem aufs Aug zu drücken. Das kümmert 
den aber nicht.

von Eric B. (beric)


Lesenswert?

Je nach Prozessorarchitektur ist value gleich

0 * 2^0  + 1 * 2^8  + 2 * 2^16 + 0 * 2^24 (131328 dec) oder
0 * 2^24 + 1 * 2^16 + 2 * 2^8  + 0 * 2^0  ( 66084 dec).

(wobei 2^x steht für "2 hoch x")

von Dirk B. (dirkb2)


Lesenswert?

Du hast 0x00010200 = 66048 oder 0x00020100 = 131328 je nach Endianness

Immer zwei Hexziffern pro Byte.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

mila schrieb:
> Ich würde erwarten, dass X jetzt gleich 120 ist. Dies ist aber mit
> nichten der Fall.
Im 256er-Zahlensystem schon. Denn jede deiner 4 Stellen kann ja Werte 
von 0 bis 255 annehmen.

Dumm ist nur, dass weder du noch der uC mit diesem Zahlensystem was 
anfangen können...

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.