我想将字符串编码为字节。

要转换为再见,我使用了byte.fromhex()

>>> byte.fromhex('7403073845')
b't\x03\x078E'


但是它显示了一些字符。

如何将其显示为如下所示的十六进制?

b't\x03\x078E' => '\x74\x03\x07\x38\x45'

最佳答案

Python repr不能更改。如果您想做这样的事情,您需要自己做; bytes对象正在尝试最小化喷出,而不是为您格式化输出。

如果要这样打印,可以执行以下操作:

from itertools import repeat

hexstring = '7403073845'

# Makes the individual \x## strings using iter reuse trick to pair up
# hex characters, and prefixing with \x as it goes
escapecodes = map(''.join, zip(repeat(r'\x'), *[iter(hexstring)]*2))

# Print them all with quotes around them (or omit the quotes, your choice)
print("'", *escapecodes, "'", sep='')


输出完全符合您的要求:

'\x74\x03\x07\x38\x45'

10-07 21:39