Я пытаюсь «распаковать» (используя Python-модуль struct) байтовый массив для нескольких переменных, используя отформатированную строку:
(a, b, c, d, e, f, g, h) = unpack('HHHHHBBL', my_byte_array)
Я ожидаю (когда я читаю документы ), что:
- a - e будет коротким без знака (размером 2 байта каждый)
- f и g будут unsigned char (размером 1 байт каждый)
- h будет unsigned long (с размером 8 байт)
Когда я запускаю это на своем компьютере с Windows 10, это именно то, что я получаю.
На двух других моих машинах с Mac OS X и Manjaro Linux (на всех трех установлен Python 3.7) я получу сообщение об ошибке:
struct.error: unpack requires a buffer of 24 bytes
Когда я запускаю следующее, вывод одинаков на всех трех машинах
>>> from struct import *
>>> calcsize('H')
2
>>> calcsize('B')
1
>>> calcsize('L')
8
Но когда я запускаю следующее:
>>> calcsize('HHHHHBBL')
Вывод на моем компьютере с Windows - 16 , но на двух других системах 24 . Что мне кажется странным, что здесь происходит?
А как мне использовать struct.unpack в многоплатформенной среде?