2

Допустим, я открываю tiff-файл в emacs и вижу следующее в hexl-режиме:

0x08000400

и я знаю, что файл немного порядковый Означает ли это, что число на самом деле 262152 в десятичном или

0x00040008 

в шестнадцатеричном? Будет ли это преобразование в десятичное число отличаться, если оно будет 8 бит против 16 бит?

1 ответ1

2

Для 8-битных значений порядок байтов не имеет значения.
Помимо этого, важна структура данных поля.

Если вы работаете с байтовым потоком в виде байтового потока (как показано здесь),
16-битное значение имеет младший байт перед старшим байтом. Итак, "0x08 0x00" это значение 8.

Кроме того, вы, возможно, уже знаете это, но это приятно отметить.
Со страницы TIFF в Википедии,

Каждый TIFF начинается с 2-байтового индикатора порядка байтов:
"II" для байтов с прямым порядком байтов и "MM" для байтов с байтовыми порядками.
Следующие 2 байта представляют число 42,
выбран, потому что это двоичный шаблон 101010 и
«за его глубокое философское значение ».

Чтение 42 зависит от порядка байтов, указанного 2-байтовым индикатором.
Все слова, двойные слова и т.д. В файле TIFF читаются на основе указанного порядка байтов.

В спецификации TIFF 6.0 говорится, что совместимые считыватели TIFF должны поддерживать оба порядка байтов (II и MM), однако авторы TIFF могут выбирать порядок байтов, подходящий для их изображения. Это привело к шутке сообщества обработки изображений, что TIFF является аббревиатурой для тысяч несовместимых форматов файлов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .