[英]weird hexadecimal representation in python \xhhK
今天,我在用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'
什么ist \\ xa6K? \\ xa6是有效格式。
解压缩此变量可以很好地工作,因此这似乎是合法的十六进制方式,但是为什么呢? 对于类似的问题,一位朋友编写了一个go程序,该程序为他提供了相同的数字00 00 00 00 00 03 a6 4b。 现在,如果我们检查K的十六进制值,则为4b。
tldr; 为什么\\ xa6K与\\ xa6 \\ x4b相同?
谢谢你的帮助 :)
感谢您的解决方案,我有点愚蠢:D
struct.pack
返回一个str
对象(python3中的bytes
)。 字符串选择使用十六进制代码(例如'\\xa6'
)表示非打印字符 。 但是,对应于'\\x4b'
的字节是可打印的字符,因此字符串改用该字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.