Endianness
Endianness is een term uit de informatica die beschrijft hoe gegevens worden opgeslagen. Meer specifiek bepaalt de term welk uiteinde van een gegevenstype met meerdere bytes de meest significante waarden bevat. De twee typen endianness zijn big-endian en little-endian.
Big-endian
Big-endian is de meest gebruikte manier om binaire gegevens op te slaan. Hierbij wordt de meest significante (of grootste) waarde eerst geplaatst, gevolgd door minder significante waarden. De big-endian-weergave van het gehele getal 123 plaatst bijvoorbeeld de honderdtallen (1) eerst, gevolgd door de tientallen (2) en daarna de eenheden (3), oftewel [123].
Little-endian
Bij little-endian wordt de minst significante waarde eerst opgeslagen, gevolgd door steeds meer significante waarden. Het getal 123 wordt in little-endian-notatie bijvoorbeeld weergegeven als [321]. De tekenreeks "ABC" wordt weergegeven als [CBA].
Conversie van endianness
In de meeste gevallen hoeven ontwikkelaars endianness niet op te geven, omdat de compiler het juiste gegevenstype voor een specifiek platform genereert. Een programma moet echter mogelijk externe invoer verwerken, zoals een bestandsindeling waarin gegevens met een andere endianness worden opgeslagen. In dat geval moeten de gegevens worden geconverteerd van little-endian naar big-endian of omgekeerd.
Het converteren van endianness is niet zo eenvoudig als het omkeren van de gegevens. De bytes, en niet de bits, moeten worden omgekeerd. Met andere woorden: elke byte (of elk blok van acht bits) moet hetzelfde blijven, maar de volgorde van de bytes wordt gewijzigd. Dit kan worden uitgelegd aan de hand van de hexadecimale of binaire weergave van gegevens.
Het gehele getal 41.394 wordt bijvoorbeeld in big-endian-notatie als volgt weergegeven:
hexadecimaal: A1B2
binair: 1010000110110010
Bij het converteren van deze gegevens naar little-endian worden de gegevens niet omgekeerd, maar de afzonderlijke bytes binnen de gegevens. In hexadecimale notatie worden twee cijfers gebruikt om elke byte weer te geven: [A1][B2], terwijl in binaire notatie acht cijfers worden gebruikt: [10100001][10110010].
De little-endian-weergave van 41.394 is daarom:
hexadecimaal: B2A1
binair: 1011001010100001
NOTE: Sommige processors kunnen gegevens zowel als big-endian als als little-endian ophalen, zonder dat conversie nodig is. Dit wordt bi-endian-gegevenstoegang genoemd.
Test je kennis