Dictionnaire

Que signifie l'ordre des octets ?

L'ordre des octets est l'un des détails cachés que vous trouvez dans un fichier lorsque vous vérifiez ses métadonnées. Découvrez ce qu'il signifie et ce qu'il révèle sur la façon dont votre fichier a été écrit.

byte-order

L'ordre des octets, aussi appelé endianness, décrit la séquence dans laquelle les octets d'une valeur plus grande sont stockés. Les ordinateurs peuvent écrire ces octets en commençant par l'une ou l'autre extrémité, et le fichier doit indiquer laquelle il a utilisée pour que tout ce qui le lira plus tard retrouve le même nombre.

Les deux ordres d'octets

Un octet pris isolément est sans ambiguïté. Les nombres trop grands pour tenir dans un seul octet doivent être répartis sur plusieurs, et c'est là que les deux conventions divergent :

  • Big-endian : le stockage ou l'envoi commence par l'octet contenant les bits de poids fort, l'importance diminuant ensuite
  • Little-endian : le stockage ou l'envoi commence par l'octet contenant les bits de poids faible, l'importance augmentant ensuite

Prenons le nombre 4660, qui nécessite deux octets. Un fichier big-endian les écrit comme 12 34 et un fichier little-endian comme 34 12. Même nombre, ordre inversé. Il existe aussi des formes mixtes, décrites comme mixed-endian ou middle-endian, mais elles sont rares. Les deux principaux ordres sont utilisés au quotidien, et celui que vous voyez dépend de l'appareil ou du programme qui a créé le fichier.

Quels fichiers le portent

Le champ est surtout connu via les fichiers TIFF et tout ce qui repose sur la structure TIFF, y compris le bloc de métadonnées Exif dans les photos JPEG et les formats RAW d'appareil photo comme NEF, CR2, ARW et DNG. Ces fichiers commencent par un marqueur de deux lettres, II pour Intel ou MM pour Motorola, les entreprises dont les processeurs ont rendu chaque ordre courant. Un rapport l'explicite généralement sous la forme Little-endian (Intel, II) ou Big-endian (Motorola, MM). C'est l'appareil photo, le scanner ou le programme qui a écrit les métadonnées qui l'a choisi.

Les conteneurs audio ont fait le même choix au niveau de l'ensemble du format : WAV stocke ses valeurs en little-endian et AIFF les stocke en big-endian, ce qui explique en partie pourquoi deux formats contenant exactement les mêmes échantillons sonores ne sont pas interchangeables octet par octet.

Pourquoi cela est important pour votre fichier

L'ordre des octets est la raison pour laquelle des métadonnées écrites sur une machine peuvent sembler absurdes sur une autre. Un lecteur qui ignore le marqueur, ou suppose le mauvais ordre, ne tombe pas en panne proprement : il produit des dates impossibles, des valeurs d'exposition aberrantes et des longueurs qui pointent au-delà de la fin du fichier, ou il déclare simplement les métadonnées illisibles. Connaître l'ordre indique comment le fichier peut être ouvert et traité correctement.

Cela compte double si vous éditez des métadonnées, car les nouvelles valeurs doivent être réécrites dans l'ordre indiqué par le fichier. Et si ce marqueur lui-même est endommagé, l'ensemble du bloc de métadonnées devient généralement illisible, même si l'image ou l'audio dans le fichier est parfaitement intact. Ce champ décrit uniquement la façon dont le fichier est structuré et ne contient donc aucune information personnelle sur vous ou votre appareil.