Kolejność bajtów
Kolejność bajtów to termin z zakresu informatyki, który opisuje sposób przechowywania danych. Dokładniej określa, która część wielobajtowego typu danych zawiera najbardziej znaczące wartości. Istnieją dwa rodzaje kolejności bajtów: big-endian i little-endian.
Big-endian
Big-endian to najczęściej stosowany sposób przechowywania danych binarnych. Umieszcza najbardziej znaczącą (czyli największą) wartość jako pierwszą, a następnie mniej znaczące wartości. Na przykład reprezentacja liczby całkowitej 123 w kolejności big-endian umieszcza najpierw wartość setek (1), następnie wartość dziesiątek (2), a potem wartość jedności (3), czyli [123].
Little-endian
W kolejności little-endian najmniej znacząca wartość jest umieszczana jako pierwsza, a następnie wartości o coraz większym znaczeniu. Na przykład liczba 123 w zapisie little-endian to [321]. Ciąg znaków "ABC" jest reprezentowany jako [CBA].
Konwersja kolejności bajtów
W większości przypadków programiści nie muszą określać kolejności bajtów, ponieważ kompilator generuje właściwy typ danych dla konkretnej platformy. Program może jednak potrzebować przetwarzać dane wejściowe z zewnątrz, na przykład format pliku, który przechowuje dane w innej kolejności bajtów. W takim przypadku dane trzeba przekonwertować z kolejności little-endian na big-endian lub odwrotnie.
Konwersja kolejności bajtów nie polega po prostu na odwróceniu danych. Należy odwrócić bajty, a nie bity. Innymi słowy, każdy bajt (czyli blok ośmiu bitów) musi pozostać taki sam, ale kolejność bajtów ulega zmianie. Można to wyjaśnić za pomocą szesnastkowej lub binarnej reprezentacji danych.
Na przykład liczba całkowita 41 394 jest reprezentowana w kolejności big-endian jako:
szesnastkowo: A1B2
binarnie: 1010000110110010
Konwersja tych danych do kolejności little-endian nie polega na odwróceniu danych, lecz poszczególnych bajtów w danych. Zapis szesnastkowy używa dwóch cyfr do przedstawienia każdego bajtu – [A1][B2], natomiast zapis binarny używa ośmiu cyfr – [10100001][10110010].
Dlatego reprezentacja liczby 41 394 w kolejności little-endian wygląda tak:
szesnastkowo: B2A1
binarnie: 1011001010100001
NOTE: Niektóre procesory mogą pobierać dane zarówno w kolejności big-endian, jak i little-endian, bez konieczności konwersji. Nazywa się to dwukierunkowym dostępem do danych.
Sprawdź swoją wiedzę