Forum: Compiler & IDEs 16 Bit Variable aus 2 8 Bit laden


von Paul (Gast)


Lesenswert?

Hallo,
ich habe in 2 8 Bit Variablen (unsigned char) jeweils den High und den 
Low Teil einer 16 Bit Variable. Wie kann ich das zu einer 16 Bit 
Variable zusammenfügen. In Assembler gibt es ja meist den Befehl den 
höherwertigen Teil der Variable zu lasen. Gibt es so etwas in C auch?

Viele Grüße

von Karl H. (kbuchegg)


Lesenswert?

Paul schrieb:
> Hallo,
> ich habe in 2 8 Bit Variablen (unsigned char) jeweils den High und den
> Low Teil einer 16 Bit Variable. Wie kann ich das zu einer 16 Bit
> Variable zusammenfügen. In Assembler gibt es ja meist den Befehl den
> höherwertigen Teil der Variable zu lasen. Gibt es so etwas in C auch?
>

Es gibt Fragen, die tauchen jeden 2.ten Tag auf :-)

uint8_t LowByte;
uint8_t HighByte;

uint16_t result = ( HighByte << 8 ) | LowByte;

von Matthias L. (Gast)


Lesenswert?

>uint16_t result = ( HighByte << 8 ) | LowByte;

Den Cast nicht vergessen:

uint16_t result = ( (uint16_t)HighByte << 8 ) | LowByte;

von Klaus W. (mfgkw)


Lesenswert?

geht auch ohne, weil es dann als int gerechnet wird.
Der cast stört aber auch nicht; sauberer sieht es m.E. tatsächlich mit 
aus.

von Besserwisser (Gast)


Lesenswert?

Klaus Wachtler schrieb:
> geht auch ohne, weil es dann als int gerechnet wird.
> Der cast stört aber auch nicht; sauberer sieht es m.E. tatsächlich mit
> aus.

Würde ich mich nicht darauf verlassen, ich habs schon anders erlebt. 
Also lieber den Cast darein!

von Klaus W. (mfgkw)


Lesenswert?

Dann war es kein C-Compiler, aber auch egal.

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.