Python 3.x Python-如何用常规十六进制替换字节格式的\t、\n和\r
使用以下脚本:Python 3.x Python-如何用常规十六进制替换字节格式的\t、\n和\r,python-3.x,Python 3.x,使用以下脚本: data = "000102030405060708090a0b0c0d0e0f" data = bytes(bytearray.fromhex(data)) print(data) 我得到: b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f' 我想要的是: b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f' 我正在用P
data = "000102030405060708090a0b0c0d0e0f"
data = bytes(bytearray.fromhex(data))
print(data)
我得到:
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
我想要的是:
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'
我正在用Python3.x编写代码,我就是搞不懂这个。您的
数据
对象的底层字节表示仍然有效,不管它打印了什么。但是,如果您特别追求打印,您可以通过以下方式解决:
>>> print("".join("\\x{:02x}".format(c) for c in data))
\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f
我认为您不能强制
字节。\uuu repr\uuu()
将可打印的ASCII字符打印为十六进制值。您的目标不太清楚-这两个ByTestRing完全相同,并且无法更改默认表示形式。您想构建一个总是使用十六进制的字符串(注意,不是字节对象)吗?我正在使用Python ZigBee模块通过UART与微控制器通信。该模块仅采用精确的十六进制表示。我希望有一个快速的解决方法。但是b“\t”
和b”\x09“
是完全相同的字节。您的模块要么接受原始字节(这是我所期望的,在这种情况下您很好),要么接受字符串(可能是ascii十六进制字符),在这种情况下您想要的对您没有任何帮助,或者其他一些东西,在这种情况下,我们需要知道它是什么。模块接受字节,但出于某种原因,它只需要b'\x09'而不是b'\t'。这很难相信——在控制台键入b'\x09'
,然后你会得到b'\t'
,因为它们是完全相同的字节,只是显示方式不同而已。这就像13.0
vs13.00
——它们是完全相同的浮动。更有可能的是,其他事情发生了变化,但现在这是一个好消息。快告诉我!作为参考,这是我发现如何做到这一点的地方。这是一个纯粹的偏好,但我认为r“\x{:02x}”
更容易阅读。