Dicionário

O que significa a ordem de bytes?

A ordem de bytes é um dos detalhes ocultos que você encontra em um arquivo ao verificar seus metadados. Descubra o que isso significa e o que revela sobre como seu arquivo foi criado.

byte-order

A ordem de bytes, também conhecida como endianness, descreve a sequência em que os bytes de um valor maior são armazenados. Os computadores podem gravar esses bytes começando por qualquer uma das pontas, e o arquivo precisa informar qual delas foi usada para que qualquer leitor futuro recupere o mesmo número.

As duas ordens de bytes

Um byte sozinho é inequívoco. Números grandes demais para caber em um único byte precisam ser divididos em vários, e é aí que as duas convenções se separam:

  • Big-endian: o armazenamento ou envio começa pelo byte que contém os bits mais significativos, com a significância diminuindo a partir daí
  • Little-endian: o armazenamento ou envio começa pelo byte que contém os bits menos significativos, com a significância aumentando a partir daí

Pegue o número 4660, que precisa de dois bytes. Um arquivo big-endian os grava como 12 34 e um arquivo little-endian como 34 12. Mesmo número, ordem invertida. Também existem formas mistas, descritas como mixed-endian ou middle-endian, mas são raras. As duas ordens principais são usadas no dia a dia, e qual delas você encontra depende do dispositivo ou programa que criou o arquivo.

Quais arquivos o carregam

O campo é mais conhecido a partir do TIFF e de tudo o que é construído sobre a estrutura TIFF, o que inclui o bloco de metadados Exif em fotos JPEG e formatos RAW de câmera como NEF, CR2, ARW e DNG. Esses arquivos começam com um marcador de duas letras, II para Intel ou MM para Motorola, as empresas cujos processadores tornaram cada ordem comum. Um relatório geralmente explicita isso como Little-endian (Intel, II) ou Big-endian (Motorola, MM). A câmera, o scanner ou o programa que gravou os metadados fez essa escolha.

Contêineres de áudio fizeram a mesma escolha no nível de todo o formato: WAV armazena seus valores em little-endian e AIFF em big-endian, o que é um dos motivos pelos quais dois formatos que contêm exatamente as mesmas amostras de som não são intercambiáveis byte a byte.

Por que isso é importante para o seu arquivo

A ordem de bytes é o motivo pelo qual metadados gravados em uma máquina podem parecer sem sentido em outra. Um leitor que ignora o marcador ou supõe a ordem errada não falha de forma discreta: ele produz datas impossíveis, valores de exposição absurdos e comprimentos que apontam além do fim do arquivo, ou simplesmente declara os metadados ilegíveis. Saber a ordem informa como o arquivo pode ser aberto e processado corretamente.

Isso é ainda mais importante se você editar metadados, porque os novos valores precisam ser gravados de volta na ordem declarada pelo arquivo. E se o próprio marcador estiver danificado, normalmente todo o bloco de metadados se torna ilegível, mesmo que a imagem ou o áudio dentro do arquivo estejam perfeitamente intactos. O campo descreve apenas como o arquivo está organizado, portanto não contém nada de pessoal sobre você ou seu dispositivo.