Network-Byte-Order

Einführung

Die Byte-Reihenfolge (englisch: Byte-Order oder Endianness) bezeichnet in der Computertechnologie die Speicherorganisation für einfache Zahlenwerte, in erster Linie die Ablage von ganzzahligen Werten (Integer) im Arbeitsspeicher. Eine Festlegung des zu verwendenden Speicherungsformats ist dann nötig, wenn zur Codierung der zu speichernden Zahl mehr Bits erforderlich sind, als in der kleinsten adressierbaren Einheit zur Verfügung stehen. Im Regelfall ist die kleinste adressierbare Einheit ein Byte. Die Speicherung einer Zahl erfolgt nun, falls hierfür mehr als ein Byte benötigt wird, in mehreren Bytes, deren Speicheradressen direkt aufeinanderfolgen. Während sich bei vielen anderen Formen der Speicherorganisation herstellerübergreifende Standards herausgebildet haben, so haben sich bei der Byte-Reihenfolge zwei Varianten erhalten.

Big Endian

Bei Big Endian wird das Byte mit den höchstwertigen Bits (d. h. die signifikantesten Stellen) zuerst gespeichert, das heißt, an der kleinsten Speicheradresse. Im Allgemeinen bedeutet der Begriff, dass Daten mit dem größtwertigsten Begriff zuerst genannt werden, wie etwa bei der deutschen Schreibweise der Uhrzeit: Stunden:Minute:Sekunde.

Little Endian

Bei Little Endian wird dagegen das Byte mit den niederwertigsten Bits (d. h. die am wenigsten signifikanten Stellen) an der kleinsten Speicheradresse gespeichert beziehungsweise der kleinstwertigste Begriff zuerst genannt wird wie bei der herkömmlichen deutschen Datumsschreibweise: Tag.Monat.Jahr.

Umrechnung zwischen Big und Little Endian

Da man gelegentlich zwischen den beiden Formaten umrechnen muss (insbesondere bei der Netzwerkprogrammierung), stellen die gängigen Programmiersprachen spezielle Funktionen zur Verfügung. In C sind dies z.B. "htonl()" und "ntohl", in Perl verwendet man "pack" und "unpack" mit dem Parameter "N". Die Network-Byte-Order ist binär anzugeben.