2013-04-07 42 views
3

我需要將一個整數轉換爲一系列的字節字符串,它看起來像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

這聽起來像你想的字節值作爲一個整數列表。這裏是你可以做什麼:

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

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

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