Словник

Що означає порядок байтів?

Порядок байтів є однією з прихованих деталей, які ви знаходите у файлі, коли перевіряєте його метадані. Дізнайтеся, що він означає і що повідомляє про те, як був записаний ваш файл.

byte-order

Порядок байтів, також відомий як ендіанність, описує послідовність, у якій зберігаються байти більшого значення. Комп’ютери можуть записувати ці байти, починаючи з будь-якого кінця, і файл має вказати, який кінець було використано, щоб усе, що читатиме його пізніше, отримало те саме число.

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

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

  • 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, і це одна з причин, чому два формати, що містять ті самі звукові вибірки, не можна просто заміняти один одним байт у байт.

Чому це важливо для вашого файлу

Порядок байтів є причиною, чому метадані, записані на одному пристрої, можуть виглядати як нісенітниця на іншому. Засіб читання, який ігнорує маркер або припускає неправильний порядок, не «акуратно» завершує роботу: він створює неможливі дати, абсурдні значення експозиції та довжини, що виходять за межі файлу, або просто оголошує метадані непридатними для читання. Знання порядку показує, як правильно відкрити й обробити файл.

Це вдвічі важливіше, якщо ви змінюєте метадані, тому що нові значення потрібно записати назад у тому порядку, який вказано у файлі. А якщо сам маркер пошкоджено, увесь блок метаданих зазвичай стає непридатним для читання, навіть якщо зображення або звук у файлі повністю цілі. Це поле описує лише те, як фізично влаштований файл, тож воно не містить жодних особистих даних про вас чи ваш пристрій.

Мета ключі