Python3:在打印和格式化时保持十六进制命令字符串的完整性

Python3:在打印和格式化时保持十六进制命令字符串的完整性,python,python-3.x,Python,Python 3.x,我有一个用于mifare阅读器的十六进制命令字符串,其中一个命令示例如下: “\xE0\x03\x06\x01\x00” 这将给出16个字节的响应,例如: “\x0F\x02\x02\x07\x05\x06\x07\x01\x09\x0A\x09\x0F\x03\x0D\x0E\xFF” 我需要将这些值存储在文本文档中,但每当我尝试将十六进制命令转换为字符串时,字符串总是会更改,并且不会保持其原始格式,而该字符串将转换为 “\x0f\x02\x02\x07\x05\x06\x07\x01\t\n

我有一个用于mifare阅读器的十六进制命令字符串,其中一个命令示例如下:

“\xE0\x03\x06\x01\x00”

这将给出16个字节的响应,例如:

“\x0F\x02\x02\x07\x05\x06\x07\x01\x09\x0A\x09\x0F\x03\x0D\x0E\xFF”

我需要将这些值存储在文本文档中,但每当我尝试将十六进制命令转换为字符串时,字符串总是会更改,并且不会保持其原始格式,而该字符串将转换为

“\x0f\x02\x02\x07\x05\x06\x07\x01\t\n\t\x0f\x03\r\x0eÿ”

我已尝试使用更改此文件的格式

d = d.encode()
print("".join("\\x{:02x}".format(c) for c in d))
# Result
'\x0f\x02\x02\x07\x05\x06\x07\x01\t\n\t\x0f\x03\r\x0eÿ'
也可以通过更改字符串的编码,但这也不会在解码后给出原始字符串。我希望得到的结果是

'\x0F\x02\x02\x07\x05\x06\x07\x01\x09\x0A\x09\x0F\x03\x0D\x0E\xFF'

这样,mifare阅读器就可以在必要时将此字符串用作数据写入新标记。任何帮助都将不胜感激

我认为您遇到的问题是python试图将您的数据解释为UTF-8文本,但它是原始数据,因此不可打印。我要做的是将数据打印到文件中,并在读取时对其进行十六进制解码

比如:

import binascii # see [1]
s = b'\xE0\x03\x06\x01\x00' # tell python that it is binary data
# write in file encoded as hex text
with open('file.txt','w') as f:
     # hexlify() returns a binary string containing ascii characters
     # you need to convert it to regular string to avoid an exception in write()
     f.write(str(binascii.hexlify(s),'ascii'))
# read back as hex text
with open('file.txt', 'r') as f:
     ss=f.read()
# hex decode
x=binascii.unhexlify(ss)
然后

# test
>>> x == s
True