Словарь

Что означает порядок байтов?

Порядок байтов - это одна из скрытых деталей, которые вы находите в файле при проверке его метаданных. Узнайте, что это означает и что говорит о том, как был записан ваш файл.

byte-order

Порядок байтов, также называемый эндиканностью (endianness), описывает последовательность, в которой хранятся байты составного значения. Компьютер может записывать эти байты, начиная с любого конца, и файл должен указать, какой конец использован, чтобы при чтении позже было получено то же число.

Два порядка байтов

Один байт сам по себе однозначен. Числа, которые не помещаются в один байт, нужно разбивать на несколько, и здесь два подхода к порядку байтов расходятся:

  • Big-endian: запись или передача начинается с байта, содержащего самые значащие биты, далее значимость убывает
  • Little-endian: запись или передача начинается с байта, содержащего наименее значащие биты, далее значимость возрастает

Возьмем число 4660, которому нужно два байта. В формате big-endian файл запишет их как 12 34, а в формате little-endian как 34 12. Число одно и то же, порядок противоположный. Существуют и смешанные формы, называемые mixed-endian или middle-endian, но они встречаются редко. Оба основных порядка используются повседневно, и то, какой вы увидите, зависит от устройства или приложения, создавшего файл.

Какие файлы его содержат

Это поле лучше всего знакомо по TIFF и по всему, что построено на структуре TIFF, включая блок метаданных Exif внутри файлов JPEG и форматы RAW-камер, такие как NEF, CR2, ARW и DNG. Эти файлы начинаются с двухбуквенного маркера: II для Intel или MM для Motorola, компаний, чьи процессоры сделали соответствующий порядок распространенным. В отчете это обычно записывается как Little-endian (Intel, II) или Big-endian (Motorola, MM). Выбор делает камера, сканер или приложение, которое записало метаданные.

Аудиоконтейнеры сделали тот же выбор на уровне всего формата: WAV хранит значения в формате little-endian, а AIFF в формате big-endian. Это одна из причин, по которой два формата, содержащие одни и те же звуковые сэмплы, не взаимозаменяемы побайтно.

Почему это важно для вашего файла

Порядок байтов объясняет, почему метаданные, записанные на одном устройстве, могут выглядеть бессмыслицей на другом. Читатель, который игнорирует маркер или предполагает неверный порядок, не завершается с вежливой ошибкой: он выдает невозможные даты, нелепые значения экспозиции и длины, указывающие за пределы файла, или просто объявляет метаданные нечитаемыми. Знание порядка показывает, как правильно открыть файл и обработать его.

Это вдвойне важно при редактировании метаданных, потому что новые значения нужно записывать обратно в том порядке, который указан в файле. А если сам маркер поврежден, весь блок метаданных обычно становится нечитаемым, даже если изображение или звук внутри файла полностью целы. Поле описывает только структуру файла и не содержит ничего личного о вас или вашем устройстве.

Мета-ключи