Причина этого объясняется в Python Docs , и это связано с проблемой заполнения, когда вы используете элементы со смешанной структурой (BHB)
Paddingавтоматически добавляется только между последовательными элементами структуры.Заполнение не добавляется в начало или конец закодированной структуры.
Заполнение не добавляется при использовании нестандартного размера и выравнивания, например, с помощью «<», «>»,'=' и '!'.
См. это:
>>> struct.pack("BHB",1,1,1)
'\x01\x00\x01\x00\x01'
>>> struct.pack("=BHB",1,1,1)
'\x01\x01\x00\x01'
В первом случае заполнение было добавлено в байт, поскольку оно использовало значение по умолчанию.исходный размер и выравнивание, и вы явно устанавливаете его как стандартный размер с помощью '=', заполнение не было.