Я пытаюсь написать код для извлечения информации Exif из JPG.
Exif хранится в сегменте APP1 файла JPG. Согласно спецификации Exif формат сегмента APP1 должен начинаться следующим образом:
FF E1 // APP1 segment marker
nn nn // Length of segment
45 // 'E'
78 // 'x'
69 // 'i'
66 // 'f'
И это продолжается до тех пор, пока за FF
не последует что-то отличное от FF
или 00
.
Глядя на JPG в шестнадцатеричном редакторе, я вижу FF E1
и строку Exif
, но у меня возникают проблемы с декодированием байтов длины. Пример: в одном jpg мой шестнадцатеричный редактор говорит мне, что сегмент APP1 имеет длину 686 байтов, но длина байтов F7 C8
.
Как мне использовать эти байты, чтобы получить десятичное число 686?
Редактировать: Вот первая часть файла примера:
FF D8 FF E1 F7 C8 45 78 69 66 00 00 4D 4D 00 2A 00 00 00 08
Редактировать: На самом деле, я думаю, я мог бы знать, что здесь происходит. Действительно ли сегмент APP1 «содержит» другие сегменты? Например, если данные миниатюр считались находящимися внутри APP1, то эта длина представляется более разумной. Кто-нибудь может подтвердить / опровергнуть это?