Большинство процессоров получают доступ к данным быстрее, когда данные находятся на естественных границах, то есть данные размера 2 должны быть на четных адресах, данные размера 4 должны быть доступны на адресах, кратных четырем, и т. Д.
struct
по умолчанию поддерживает это выравнивание.Поскольку ваша структура начинается с 7 'B', добавляется байт заполнения для выравнивания следующего 'H' по четному адресу.Чтобы предотвратить это в Python, перед вашей строкой введите '='.
Пример:
>>> import struct
>>> struct.calcsize('BBB')
3
>>> struct.calcsize('BBBH')
6
>>> struct.calcsize('=BBBH')
5