Endianizm
Endianness to Computer Science termin, który opisuje, jak to zrobić data jest przechowywany. W szczególności określa, który koniec wielobajtu typ danych zawiera najważniejsze wartości. Dwa typy endianów to big-endian i little-endian.
Big-Endian
Big-endian to najpopularniejszy sposób przechowywania dwójkowy dane. Na pierwszym miejscu umieszcza wartość najbardziej znaczącą (lub największą), a następnie wartości mniej istotne. Na przykład reprezentacja big-endian liczba całkowita 123 umieszcza najpierw wartości setek (1), następnie dziesiątek (2), a następnie wartości jedynek (3) lub [123].
Little-Endian
Little-endian przechowuje najpierw najmniej znaczącą wartość, a następnie wartości coraz bardziej znaczące. Na przykład liczba 123 w notacji little-endian to [321]. Tekst ciąg „ABC” jest przedstawiane jako [CBA].
Endian Conversion
W większości przypadków, deweloperzy nie musisz określać endianness, ponieważ kompilator generuje poprawny typ danych dla konkretnego Platforma. Jednak program może wymagać przetwarzania zewnętrznego wkład, taki jak format pliku który przechowuje dane o różnym endianness. W takim przypadku dane należy przekonwertować z little-endian na big-endian lub odwrotnie.
Konwersja endianness nie jest tak prosta, jak odwracanie danych. Plik bajtów, niż Bity, należy odwrócić. Innymi słowy, każdy bajt (lub blok ośmiu bitów) musi pozostać taki sam, ale kolejność bajtów jest zmieniana. Można to wyjaśnić za pomocą szesnastkowy lub binarna reprezentacja danych.
Na przykład liczba całkowita 41,394 XNUMX jest reprezentowana w notacji big-endian jako:
szesnastkowy: A1B2
dwójkowy: 1010000110110010
Konwersja tych danych do formatu little-endian nie powoduje odwrócenia danych, ale raczej poszczególne bajty w danych. Szesnastkowy używa dwóch cyfr do reprezentacji każdego bajtu - [A1] [B2], podczas gdy dwójkowy używa ośmiu cyfr - [10100001] [10110010].
Dlatego reprezentacja little-endian 41,394 XNUMX to:
szesnastkowy: B2A1
dwójkowy: 1011001010100001
UWAGA: Trochę Procesory może pobierać dane jako big-endian lub little-endian bez konieczności konwersji. Nazywa się to dostępem do danych dwu-endian.