2013-09-10 2 views
23

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

struct.pack("i",34); 

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

[0x00 0x00 0x00 0x22] 

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

+0

pack ('hhl', 1, 2, 3) .hex() преобразует строку в шестнадцатеричный формат – sbhal

ответ

40

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

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

Примечание котировка в начале, это ASCII элемент кода 34:

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

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

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

, где > указывает выравнивание по-крупному.