2013-04-07 4 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']