我需要將輸入值打包到結構中,並將其打包爲32位#(無符號整數)。將字節碼字符串包裝爲結構爲32位值
一個例子輸入 '\ X08 \ X08 \ X08 \ X08'
然而,這不起作用:
>>> s = struct.pack('I', '\x08\x08\x08\x08')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
struct.error: cannot convert argument to integer
我在做什麼錯?包裝它作爲int()不起作用:
>>> int('\x08\x08\x08\x08', 16)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 16: '\x08\x08\x08\x08'
我試圖建立一個結構,其中有一個其他打包值之前和之後這一個。例如,我想
inp = '\x08\x08\x08\x08'
s = struct.pack('HHIH', 50, 100, inp, 100)
返回
'2\x00d\x00\x08\x08\x08\x08d\x00'
打包到'I'需要*整數*輸入。你確定你不是想要*解壓縮*嗎? –
如果你使用的是python3.2或更新的版本,你可以使用'int.from_bytes' – mgilson