从struct.pack中提取字符串

时间:2013-04-07 23:07:36

标签: python string pack struct.pack

我需要将整数转换为一系列字节字符串,看起来struct.pack是最好的方法。一行获取了我需要的所有信息:

In [51]: struct.pack("@L",1000)
Out[51]: '\xe8\x03\x00\x00'

我的问题是我最终想要将它们转换为字符串列表(我将它们传递给一个CAN实用程序,需要将字节作为字符串...最终我将绕过该实用程序,但这个是我现在所处的位置)

所以我尝试访问字符串,但它是一种不同的字符串......

In [52]: output=struct.pack("@L",1000)

In [53]: type(output)
Out[53]: str

In [54]: output[0]
Out[54]: '\xe8'

In [55]: type(output[0])
Out[55]: str

In [56]: output[0][0]
Out[56]: '\xe8'

所以不太确定从哪里开始。最终,我希望最终得到像

这样的东西
(0xe8, 0x03,0x00,0x00)

1 个答案:

答案 0 :(得分:1)

听起来你想要一个字节值列表作为整数。这是你可以做的:

>>> import struct
>>> x = struct.pack("@L",1000)
>>> map(ord, x)
[232, 3, 0, 0]

如果你真的想要十六进制字符串:

>>> map(hex, map(ord, x))
['0xe8', '0x3', '0x0', '0x0']