2014-06-12 34 views
0

今天我玩了一點c編碼變量,以便輕鬆地與必要的c程序進行通信。 我讀https://docs.python.org/2/library/struct.html 我知道,\ X啓動2位十六進制表示但幾號我得到:python xhhK中奇怪的十六進制表示法

from struct import * 
datum=239179 
buf = pack(">Q", datum) 
buf 
'\x00\x00\x00\x00\x00\x03\xa6K' 

什麼IST \ xa6K? \ xa6是有效的表單。

拆開這個變量的工作原理完全正常,所以它似乎是一個合法的十六進制方式,但爲什麼呢?對於類似的問題,一位朋友寫了一個去程序,這個程序給了他相同的號碼 00 00 00 00 00 03 a6 4b。現在,如果我們檢查K的十六進制值是4b。

tldr; 爲什麼\ xa6K與\ xa6 \ x4b相同?

感謝您的幫助:)


感謝這個解決方案,我覺得有點愚蠢:d

回答

5

struct.pack返回str對象(bytes在python3)。字符串選擇使用十六進制代碼(例如'\xa6')代表非打印字符。但是,對應於'\x4b'的字節是可打印字符,所以字符串使用該字符。

相關問題