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

Python将4位十六进制合并为3位十六进制,python,hex,byte,Python,Hex,Byte,我正在尝试从Python发送一些字节。我正在使用struct.pack获取相应的发送字节。例如: >>> struct.pack('BBBBBh', 200, 0, 56, 6, 0, 6) '\xc8\x008\x06\x00\x00\x06\x00' print(['{:02x}'.format(b) for b in data]) 如果仔细观察,可以看到第二个字节(应该是\x00)已与下一个字节(应该是\x38)合并 事实上,如果我尝试通过文本连接: >>

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

>>> struct.pack('BBBBBh', 200, 0, 56, 6, 0, 6)
'\xc8\x008\x06\x00\x00\x06\x00'
print(['{:02x}'.format(b) for b in data])
如果仔细观察,可以看到第二个字节(应该是
\x00
)已与下一个字节(应该是
\x38
)合并

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

>>> '\x00' + '\x38'
'\x008'
同样的事情也会发生


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

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

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

如果要打印所有字节的十六进制值,必须显式执行,例如:

>>> struct.pack('BBBBBh', 200, 0, 56, 6, 0, 6)
'\xc8\x008\x06\x00\x00\x06\x00'
print(['{:02x}'.format(b) for b in data])

谢谢,我没有意识到它正在打印字符8。