python中奇怪的十六进制表示法\xhk
今天我玩了一点c风格的编码变量,以便于与必要的c程序进行通信。 我读 我知道\x启动2位十六进制表示,但对于一些数字,我得到:python中奇怪的十六进制表示法\xhk,python,c,hex,Python,C,Hex,今天我玩了一点c风格的编码变量,以便于与必要的c程序进行通信。 我读 我知道\x启动2位十六进制表示,但对于一些数字,我得到: from struct import * datum=239179 buf = pack(">Q", datum) buf '\x00\x00\x00\x00\x00\x03\xa6K' 什么是\xa6K\xa6是有效的表单 解包这个变量工作得非常好,所以它似乎是十六进制的合法方法,但为什么呢?对于一个类似的问题,一个朋友写了一个围棋程序,给他相同的数字 00
from struct import *
datum=239179
buf = pack(">Q", datum)
buf
'\x00\x00\x00\x00\x00\x03\xa6K'
什么是\xa6K\xa6是有效的表单
解包这个变量工作得非常好,所以它似乎是十六进制的合法方法,但为什么呢?对于一个类似的问题,一个朋友写了一个围棋程序,给他相同的数字
00 00 03 a6 4b。现在如果我们检查K的十六进制值,它是4b
tldr;
为什么\xa6K与\xa6\x4b相同
谢谢你的帮助:)
感谢这个解决方案,我觉得有点愚蠢:D
struct.pack
返回一个str
对象(bytes
,在python3中)。字符串选择使用十六进制代码表示非打印字符('\xa6'
)。但是,与'\x4b'
相对应的字节是可打印字符,因此字符串使用该字符。struct.pack
返回一个str
对象(bytes
在python3中)。字符串选择使用十六进制代码表示非打印字符('\xa6'
)。但是,与'\x4b'
对应的字节是可打印字符,因此字符串使用该字符