Подтвердить что ты не робот

Использование пакета struct в python

У меня есть число в целочисленной форме, которое мне нужно преобразовать в 4 байта и сохранить в списке. Я пытаюсь использовать модуль struct в python, но не могу заставить его работать:

struct.pack("i",34);

Это возвращает 0, когда я ожидаю, что бинарный эквивалент будет напечатан. Ожидаемый результат:

[0x00 0x00 0x00 0x22]

Но struct.pack возвращается пустым. Что я делаю неправильно?

4b9b3361

Ответ 1

Выход возвращается как строка байтов, и Python будет печатать такие строки, как символы ASCII, когда это возможно:

>>> import struct
>>> struct.pack("i",34)
'"\x00\x00\x00'

Обратите внимание на цитату в начале, что код ASCII 34:

>>> ord('"')
34
>>> hex(ord('"'))
'0x22'

Если вы ожидали, что порядок будет отменен, вам может потребоваться указать порядок байтов:

>>> struct.pack(">i",34)
'\x00\x00\x00"'

где > указывает выравнивание по большому концу.