Hallo, kann mir jemand erklären, was diese Zeile bedeutet? a = ((buffer[index] << 8) | buffer[index + 1]) + 2; ich bekomme diese C-Bitrechnerei einfach nicht hin... :(( Danke und Gruß, Jan
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; |
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.