python \ xhhK中奇怪的十六进制表示

时间:2014-06-12 16:01:39

标签: python c hex

今天我在c风格的编码变量上玩了一点点,以便轻松地与必要的c程序进行通信。 我看过https://docs.python.org/2/library/struct.html 我知道\ x开始2位十六进制表示,但是对于一些数字,我得到:

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

What ist \ xa6K? \ xa6是有效表格。

解压缩这个变量的工作完全正常,所以它似乎是十六进制的合法方式,但为什么呢?对于类似的问题,一位朋友写了一个go-program,给了他相同的数字 00 00 00 00 00 03 a6 4b。现在,如果我们检查K的十六进制值,它就是4b。

tldr; 为什么\ xa6K与\ xa6 \ x4b相同?

感谢您的帮助:)


感谢这个解决方案,我觉得有点愚蠢:D

1 个答案:

答案 0 :(得分:5)

struct.pack返回str对象(python3中的bytes)。字符串选择使用十六进制代码(例如'\xa6')表示非打印字符。但是,与'\x4b'对应的字节是可打印字符,因此字符串会使用该字符。