Python—将双字节字符串作为单字节十六进制字符写入二进制文件

Python—将双字节字符串作为单字节十六进制字符写入二进制文件,python,string,binary,hex,byte,Python,String,Binary,Hex,Byte,我正在编写一个python脚本,它打开一个文件并读取一个两个字符的字符串值,例如32或6f。然后应该将该值作为单个字节写入二进制文件(十六进制),例如0x32或0x6f file_in = open('32.xml') file_contents = file_in.read() file_in.close() file_out = open('testfile', 'wb') file_out.write(file_contents) file_out.close() 在本例中,32.xm

我正在编写一个python脚本,它打开一个文件并读取一个两个字符的字符串值,例如32或6f。然后应该将该值作为单个字节写入二进制文件(十六进制),例如0x32或0x6f

file_in = open('32.xml')
file_contents = file_in.read()
file_in.close()

file_out = open('testfile', 'wb')
file_out.write(file_contents)
file_out.close()
在本例中,32.xml是一个包含字符串“32”的纯文本文件。但是testfile输出文件的内容是'32'而不是0x32(或仅为2)

我试过write命令的各种变体。我尝试了chr()函数,但这需要将字符串转换为int

file_out.write(chr(int(file_contents)))
最后写的是字符串的十六进制值,而不是我想要的。当您的值包含a-f时,它也会失败

我也试过了

file_out.write('\x' + file_contents)

但是python解释器不喜欢这样。

您需要将原始字符串解释为十六进制整数。十六进制是以16为基数的表示法,因此将
16
添加到
int()
调用中:

file_out.write(chr(int(file_contents, 16)))

那太棒了,正是我想做的。谢谢你的快速解决方案。