C Frage (Bitoperatoren)

#3666343
Lesenswert?

Ich nehme an, dass buffer vom Typ uint8_t oder unsigned char ist.


Nehmen wir an, in buffer[index] ist 0x12 und in buffer[index + 1] 0x34 
gespeichert. Dann steht da:
1
a = ((0x12 << 8) | 0x34) + 2;

0x12 wird nun um 8 Stellen nach links geschoben, was einer 
Multiplikation mit 256 entspricht:
1
a = (0x1200 | 0x34) + 2;

Nun wird 0x1200 und 0x34 bitweise oder-verknüpft:
1
a = 0x1234 + 2;

Und schon haben wir das Resultat:
1
a = 0x1236;


Man hätte auch folgendes schreiben können:
1
a = buffer[index] * 256 + buffer[index + 1] + 2;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren