Поле смещения значения записи IFD с рациональным типом может содержать только смещение?

Рассмотрим запись IFD с рациональным типом (UNSIGNED RATIONAL или SIGNED RATIONAL).

Значение рационального типа равно 8 байтам.

Поле «смещение значения» занимает 4 байта.

Следовательно, поле «смещение значения» записи IFD с рациональным типом может содержать только смещение (поле никогда не может содержать значение).

Это правильно?


person Roger Costello    schedule 27.01.2017    source источник


Ответы (1)


Краткая версия: Да.

Длинная версия:

TIFF IFD состоит из записей IFD, которые также состоят из 12 байтов, содержащих по порядку:

  • 2-байтовый идентификатор тега
  • 2 байта Тип
  • 4 байта
  • 4-байтовое значение ИЛИ смещение

Цитата из спецификации TIFF 6.0:

Значение/смещение

Чтобы сэкономить время и пространство, смещение значения содержит значение вместо указания на значение тогда и только тогда, когда значение умещается в 4 байта. Если значение короче 4 байтов, оно выравнивается по левому краю в пределах 4-байтового смещения значения, т. е. сохраняется в байтах с меньшим номером. Вписывается ли значение в 4 байта, определяется типом и количеством поля.

Итак, поскольку рациональные типы всегда имеют длину не менее 8 байт, они никогда не могут отображаться как встроенное значение, а только как смещения + значение где-то еще в файле.

person Harald K    schedule 27.01.2017