1
我的代碼如下所示:使用struct.pack
import struct
str = "AAAAAAA"
len = len(str)+32
package = struct.pack("!H",len)
print repr(package)
結果是:
"\x00'"
當我使用len = len(str)
結果是\x00\x07
爲什麼當len
大於32,它不工作?
我的代碼如下所示:使用struct.pack
import struct
str = "AAAAAAA"
len = len(str)+32
package = struct.pack("!H",len)
print repr(package)
結果是:
"\x00'"
當我使用len = len(str)
結果是\x00\x07
爲什麼當len
大於32,它不工作?
您誤解了"\x00'"
結果。它是字符串十六進制字符代碼值和常規可打印ASCII字符的混合。如果它純粹以十六進制字符代碼顯示,那將是"\x00x\x27"
。
\x27
十進制是整數39
,這是len(str)+32
的結果。它也是'
(單引號)字符的字符代碼,它是repr()
顯示內容的一部分。
首先,不要影響內建的名字,比如'str'和'len'。給他們不同的名字(例如用_作爲前綴)。 – CristiFati
你爲什麼認爲輸出是錯誤的?它正在執行'repr()'應該在這裏執行的操作,從而創建打包結構內容的可打印表示。你期望在這裏看到什麼輸出? – bgporter
注意''\ x00'「'中的__'__(在最後_0_之後)。這是_apostrophe_ char:_ASCII_ code 0x27 = 39 = 7('len(「AAAAAAA」)')+ 32. – CristiFati