Лично я бы использовал модуль bitstring , но я могу быть предвзятым, поскольку я написал его.В качестве примера приведен простой код для чтения / записи двоичного формата.
Это один из способов создания в двоичном формате:
fmt = 'sequence_header_code,
uint:12=horizontal_size_value,
uint:12=vertical_size_value,
uint:4=aspect_ratio_information,
...
'
d = {'sequence_header_code': '0x000001b3',
'horizontal_size_value': 352,
'vertical_size_value': 288,
'aspect_ratio_information': 1,
...
}
s = bitstring.pack(fmt, **d)
и один метод, чтобы разобрать его потом:
>>> s.unpack('bytes:4, 2*uint:12, uint:4')
['\x00\x00\x01\xb3', 352, 288, 1]