今天我在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'
Run Code Online (Sandbox Code Playgroud)
什么是什么?\ xa6是有效表格.
解包这个变量的工作完全正常,所以它似乎是十六进制的合法方式,但为什么呢?对于类似的问题,朋友写了一个go-program,给了他相同的数字00 00 00 00 00 03 a6 4b.现在,如果我们检查K的十六进制值,那么它是4b.
tldr; 为什么\ xa6K与\ xa6\x4b相同?
谢谢你的帮助 :)
感谢这个解决方案,我觉得有点愚蠢:D
struct.pack返回一个str对象(bytes在python3中).字符串选择使用十六进制代码表示非打印字符('\xa6'例如).但是,对应的字节'\x4b'是可打印字符,因此字符串使用该字符.
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |