Endianita
Endianita je termín z oblasti informatiky, který popisuje, jak se ukládají data. Konkrétně určuje, který konec vícebajtového datového typu obsahuje nejvýznamnější hodnoty. Existují dva typy endianity: big-endian a little-endian.
Big-endian
Big-endian je nejběžnější způsob ukládání binárních dat. Nejvýznamnější (nebo největší) hodnotu umisťuje na první místo, za níž následují méně významné hodnoty. Například reprezentace celého čísla integer 123 ve formátu big-endian umístí nejprve hodnotu stovek (1), za ní následuje hodnota desítek (2) a potom hodnota jednotek (3), tedy [123].
Little-endian
Little-endian ukládá nejméně významnou hodnotu jako první a za ní následují stále významnější hodnoty. Například číslo 123 je v zápisu little-endian [321]. Textový řetězec "ABC" je reprezentován jako [CBA].
Převod endianity
Ve většině případů vývojáři nemusí endianitu určovat, protože kompilátor vygeneruje správný typ dat pro konkrétní platformu. Program však může potřebovat zpracovat externí vstup, například formát souboru, který ukládá data s jinou endianitou. V takovém případě je nutné data převést z little-endian na big-endian nebo naopak.
Převod endianity není tak jednoduchý jako obrácení dat. Je nutné obrátit bajty, nikoli bity. Jinými slovy, každý bajt (neboli blok osmi bitů) musí zůstat stejný, ale změní se pořadí bajtů. To lze vysvětlit pomocí hexadecimální nebo binární reprezentace dat.
Například celé číslo 41 394 je v zápisu big-endian reprezentováno takto:
hexadecimálně: A1B2
binárně: 1010000110110010
Při převodu těchto dat na little-endian se data neobracejí, ale obracejí se jednotlivé bajty v datech. Hexadecimální zápis používá k reprezentaci každého bajtu dvě číslice – [A1][B2], zatímco binární zápis používá osm číslic – [10100001][10110010].
Reprezentace čísla 41 394 ve formátu little-endian tedy vypadá takto:
hexadecimálně: B2A1
binárně: 1011001010100001
NOTE: Některé procesory mohou načítat data ve formátu big-endian i little-endian bez nutnosti převodu. Tomu se říká obousměrný přístup k datům.
Otestujte své znalosti