Если у вас есть строка с 2 байтами, которую вы хотите интерпретировать как 16-битное целое число, вы можете сделать это:
>>> s = '\0\x02'
>>> struct.unpack('>H', s)
(2,)
Обратите внимание, что> для старшего порядка (наибольшая часть целого числа идет первой). Этот формат используют теги id3.
Для других размеров целых чисел вы используете коды другого формата. например. «я» для 32-разрядного целого числа со знаком. Подробности см. В справке (структура).
Вы также можете распаковать несколько элементов одновременно. например, для 2 беззнаковых шорт, за которыми следует 32-битное значение со знаком:
>>> a,b,c = struct.unpack('>HHi', some_string)
Исходя из вашего кода, вы ищете (по порядку):
- строка из 3 символов
- 2 однобайтовых значения (основная и вспомогательная версия)
- 1-байтовая переменная флагов
- 32-битная длина
Строка формата для этого будет:
ident, major, minor, flags, len = struct.unpack('>3sBBBI', ten_byte_string)