Centre d‘Information

Endianness (Orden de Bytes)

Avec l’ordre des octets (Endianness), l’organisation de la mémoire est désignée en informatique. Chaque fois qu’il est nécessaire de stocker plus de bits que dans la plus petite unité adressable, il est nécessaire de déclarer dans quel ordre les données sont stockées.

En général, la plus petite unité adressable est composée de huit bits, soit un octet. Si vous devez stocker plus d’un octet, vous avez deux possibilités de stockage: Nous stockons les octets de gauche à droite (c'est ce qu'on appelle big endian) ou de droite à gauche (little endian).

Big Endian

Big Endian signifie commencer par le grand bout (d'où le nom). Similaire à la représentation de l'heure avec la séquence "heure - minute - seconde", ici, l’octet avec le bit le plus significatif est stocké en premier, ce qui signifie qu’il est stocké dans l’adresse de mémoire la plus basse.

Little Endian

L’autre option est de commencer par le petit bout. Comme pour écrire la date dans l’ordre "jour - mois - année", ici, l’octet avec le bit le moins significatif est le premier. Cet octet est alors écrit sur l’adresse mémoire la plus basse dans ce cas. 

Pertinence pour les Formats Unicode

Dans les encodages de texte Unicode tels que UTF-16 ou UTF-32, où un caractère est représenté non seulement par un octet mais par plusieurs octets, la question de l'ordre des octets ou de l'endianité se pose automatiquement.

Dans le codage UTF-32, par exemple, un caractère a toujours exactement 4 octets. Ces octets d'un caractère peuvent être disposés soit de droite à gauche selon Big Endian, soit de gauche à droite selon Little Endian. En conséquence, les codages sont appelés UTF-32 Big Endian (UTF-32 BE) ou UTF-32 Little Endian (UTF-32 LE).

La soi-disant marque d'ordre d'octet (Byte Order Mark, BOM) est utilisée pour distinguer les deux types de codage. La BOM correspond au point de code U+FEFF et peut éventuellement être insérée comme premier caractère d'un fichier. Il ne doit pas être affiché comme un caractère visible par les éditeurs de texte. Pour le codage UTF-32, la marque d'ordre des octets est constituée de la séquence d'octets 00 00 FE FF (Big Endian) ou de la séquence d'octets FF FE 00 00 (Little Endian). Cela signifie que les programmes qui lisent des fichiers codés de manière appropriée peuvent décider immédiatement après les premiers octets comment les octets ou caractères suivants doivent être interprétés.

Les séquences d'octets FE FF (UTF-16 LE) et FF FE (UTF-16 BE) sont utilisées pour les codages UTF-16. Avec d'autres encodages, tels que ASCII ou ANSI, la question de l'ordre des octets ne se pose pas, car chaque caractère a toujours un octet et ne peut donc pas être arrangé de différentes manières.