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'
誰能告訴我在哪裏丟失了字節?
如果我運行使用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'
誰能告訴我在哪裏丟失了字節?
你丟失的字節就在那裏; \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'