Der big endian und der little endian..

…machen mir Probleme.

Eigentlich muss man sich nicht darum kümmern, wie ein Prozessor Zahlen intern betrachtet. In einer Hochsprache wie C schon gar nicht, oder?

Na ja, eine Herausforderung ist es schon, wenn man Meta- Daten auf Bit Ebene – in meinem Fall geht es um Bild Dateien – auf einem modernen Mac verarbeiten möchte, wenn die von einem Atari ST stammen, der hat einen 68000er und der speichert integer nun mal anders.

x86 Architekturen gehen da so vor:
Bildschirmfoto 2013-11-26 um 18.43.01
Little Endian
Der 68000 tut das so:
Bildschirmfoto 2013-11-26 um 18.44.56
Big Endian

Wenn man nun wie in meinem Fall aus dem header eines im NeoCrome Format gespeicherten Bildes einen Wert der Farbpalette liest und das in einen Integer auf einer x86 Platform speichert, dann erhält mann die Bit- Folgen die die Helligkeitswerte für die R, G und B Anteile – jew. repräsentiert durch 4 Bits – vertauscht 😦

Links (<<) – und Rechts (>>) Shift:
Aufgepasst! Links schieben heist vom LSB in Richtung MSB. Auf dem x86 wandern die Bits dann aber nach rechts.