我正在尝试使用Python中的套接字库将两个十六进制数字的字节发送到一个编程为接受它们的硬件。要从用户输入的十六进制数字字符串创建字节,我尝试使用bytes.fromhex()
描述的方法here https://docs.python.org/dev/library/stdtypes.html#bytes.fromhex.
为什么会出现以下情况:
hexstring = "bb 0D 02 55 55 5A ce"
data = bytes.fromhex(hexstring)
print(data)
give me:
b'\xbb\r\x02UUZ\xce'
代替:
b'\xbb\x0d\x02\x55\x55\x5a\xce'
?
我如何让它产生第二个输出?我正在使用Python 3.5。
这与以下无关bytes.fromhex()
。如果将预期结果输入 Python,您会得到相同的结果:
>>> b'\xbb\x0d\x02\x55\x55\x5a\xce'
b'\xbb\r\x02UUZ\xce'
The repr()
的表示bytes
对象将始终使用 ASCII 可打印字符和短的单字母转义序列(如果可能)。
So \x0d
显示为\r
,因为这是回车符的 ASCII 代码点。\x55
是可打印的 ASCII 字符U
, etc.
如果这对您来说是个问题,您必须显式转换您的bytes
再次将值转为十六进制:
>>> b'\xbb\r\x02UUZ\xce'.hex()
'bb0d0255555ace'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)