今天我玩了一些 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'
\xa6K 是什么?\xa6 是有效形式。
解压这个变量完全没问题,所以它似乎是一种合法的十六进制方式,但为什么呢?对于一个类似的问题,一个 friend 写了一个go-program,它给了他相同的数字00 00 00 00 00 03 a6 4b 。现在,如果我们检查 K 的十六进制值,它是 4b。
tldr;为什么\xa6K 与\xa6\x4b 相同?
感谢您的帮助:)
感谢这个解决方案,我觉得有点傻:D
struct.pack
返回一个 str
对象(在 python3 中为 bytes
)。字符串选择使用十六进制代码(例如 '\xa6'
)表示非打印字符。然而,对应于 '\x4b'
的字节是一个可打印字符,因此字符串使用它。
我是一名优秀的程序员,十分优秀!