Diccionario

¿Qué significa el orden de bytes?

El orden de bytes es uno de los detalles ocultos que encuentras en un archivo cuando revisas sus metadatos. Descubre qué significa y qué te dice sobre cómo se escribió tu archivo.

byte-order

El orden de bytes, también conocido como endianness, describe la secuencia en la que se almacenan los bytes de un valor más grande. Los ordenadores pueden escribir esos bytes empezando por cualquiera de los dos extremos, y el archivo tiene que indicar qué extremo usó para que cualquier programa que lo lea después obtenga el mismo número.

Los dos órdenes de bytes

Un byte por sí mismo es inequívoco. Los números demasiado grandes para un solo byte deben dividirse en varios, y ahí es donde las dos convenciones se separan:

  • Big-endian: el almacenamiento o envío comienza con el byte que contiene los bits más significativos, y a partir de ahí la significancia disminuye
  • Little-endian: el almacenamiento o envío comienza con el byte que contiene los bits menos significativos, y a partir de ahí la significancia aumenta

Tomemos el número 4660, que necesita dos bytes. Un archivo big-endian los escribe como 12 34 y un archivo little-endian como 34 12. Es el mismo número, en orden inverso. También existen formas mixtas, descritas como mixed-endian o middle-endian, pero son poco frecuentes. Ambos órdenes principales se usan a diario, y cuál veas depende del dispositivo o programa que creó el archivo.

Qué archivos lo llevan

Este campo es más conocido por TIFF y por todo lo que se basa en la estructura TIFF, lo que incluye el bloque de metadatos Exif dentro de fotos JPEG y formatos RAW de cámara como NEF, CR2, ARW y DNG. Esos archivos comienzan con un marcador de dos letras, II para Intel o MM para Motorola, las empresas cuyos procesadores hicieron común cada orden. Un informe suele expresarlo como Little-endian (Intel, II) o Big-endian (Motorola, MM). La cámara, el escáner o el programa que escribió los metadatos lo eligió.

Los contenedores de audio tomaron la misma decisión a nivel de todo el formato: WAV almacena sus valores en little-endian y AIFF los almacena en big-endian, lo que es una de las razones por las que dos formatos que contienen exactamente las mismas muestras de sonido no son intercambiables byte a byte.

Por qué es importante para tu archivo

El orden de bytes es la razón por la que los metadatos escritos en una máquina pueden parecer un sinsentido en otra. Un lector que ignora el marcador, o supone el orden incorrecto, no falla de forma elegante: produce fechas imposibles, valores de exposición absurdos y longitudes que apuntan más allá del final del archivo, o simplemente declara que los metadatos no se pueden leer. Conocer el orden te indica cómo se puede abrir y procesar el archivo correctamente.

Importa aún más si editas metadatos, porque los valores nuevos deben escribirse de nuevo en el orden que declara el archivo. Y si ese propio marcador se daña, normalmente todo el bloque de metadatos se vuelve ilegible aunque la imagen o el audio dentro del archivo esté perfectamente intacto. El campo solo describe cómo está estructurado el archivo, por lo que no contiene nada personal sobre ti o tu dispositivo.