Python 将 4 位十六进制合并为 3 位十六进制

Python merges 4 digit hex to 3 digit hex

我正在尝试从 Python 发送一些字节。我正在使用 struct.pack 来获取相应的发送字节。例如:

>>> struct.pack('BBBBBh', 200, 0, 56, 6, 0, 6)
'\xc8\x008\x06\x00\x00\x06\x00'

如果你仔细观察,你会发现第二个字节(应该是\x00)已经和下一个字节(应该是\x38)合并了。

事实上,如果我尝试通过文本连接:

>>> '\x00' + '\x38'
'\x008'

同样的事情发生了。

我需要'\x00\x38'。这可能吗?我是否遗漏了与格式相关的内容?

如果一个字节是可打印字符,Python 将打印它而不是其十六进制值。

0x38(十进制 56)是字符 '8'ASCII code,因此 '\x00\x38' 打印为 '\x008'.

如果你想打印所有字节的十六进制值,你必须明确地做,例如:

print(['{:02x}'.format(b) for b in data])