2013-10-11 46 views
0

如果我運行使用Python 3.3.1如下:Python的struct.pack丟下一個字節。

import struct 
struct.pack('!Bhh', 1, 1, 10) 

我得到這樣的結果:

b'\x01\x00\x01\x00\n' 

,而不是結果,我期待:

b'\x01\x00\x01\x00\x0a\n' 

誰能告訴我在哪裏丟失了字節?

回答

3

你丟失的字節就在那裏; \n是在ASCII字符表10:顯示它作爲\x0a它被顯示爲一個Python字符串文字轉義碼的

>>> chr(10) 
'\n' 

相反;其他已知的逃生也是如此。打印的ASCII字符顯示爲字符:

>>> struct.pack('!Bhh', 1, 1, 13) 
b'\x01\x00\x01\x00\r' 
>>> struct.pack('!Bhh', 1, 1, 9) 
b'\x01\x00\x01\x00\t' 
>>> struct.pack('!Bhh', 1, 1, 65) 
b'\x01\x00\x01\x00A' 

它可以幫助使用binascii.hexlify()你的字節轉換爲十六進制字符:

>>> from binascii import hexlify 
>>> hexlify(struct.pack('!Bhh', 1, 1, 10)) 
b'010001000a' 
相關問題