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])
我正在尝试从 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])