Zitat:
Ich bekomme die Nachricht als Bytestring, also z.B
Nachricht 1: a01b48768e9ff9
Nachricht 2: 46a57b8c94aa2332
...
Nun da hast du wieder eine 200% Redundanz drinnen. Als Byte-Hex belegt man 2 Bytes für ein Byte an Daten. Dh die Zahlen 0..255 werden intern als 1 Byte abgespeichert, aber als HexString benötigt man 2 Zeichen, wo pro Zeichen ein Byte verwendet wird - also 2 Byte.
Ist also auch unfug!
Zur Frage mit 12 Bits.. Nun, die Daten liegen im Speicher vor.
Will man die ersten 12 Bits lesen, so liest man Bit 0 in (z.B.) x ein, shifted x um 1 nach links und wiederholt bis man an Bit 11 angelangt ist.
Du musst dir nur überlegen, wie du GetBit() & SetBit() realisiert. Alles andere ist klacks, weil es darauf dann aufbauen wird (soll!).