Das Problem liegt wahrscheinlich daran, dass die Daten als Little Endian
gepseichert werden.
Bei Little Endian ist das niederwertigste Byte an der Stelle mit der
kleinsten Adresse, wenn du dann den Wert einfach Byteweise ausgibts,
wird zuerst das Low Byte, dann das High Byte ausgegeben.
Wenn man deine Ausgabe
1 | 0b0001 0110 1100 0000
|
2 | 0b0000 0001 0000 1100
|
Von Little-Endian zu einer "normalen" 16 bit Zahl ändert, kommt man auf
1 | 0b1100 0000 0001 0110
|
2 | 0b0000 1100 0000 0001
|
Der Shift funktioniert also anscheinend, aber dein Wert hat keine 4 0er
am Ende, vielleicht vertauscht du beim lesen in einen 16 bit Wert die
Bytes