Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python-如何用常规十六进制替换字节格式的\t、\n和\r_Python 3.x - Fatal编程技术网

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
vs
13.00
——它们是完全相同的浮动。更有可能的是,其他事情发生了变化,但现在这是一个好消息。快告诉我!作为参考,这是我发现如何做到这一点的地方。这是一个纯粹的偏好,但我认为
r“\x{:02x}”
更容易阅读。