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

时间:2014-02-10 12:46:33

标签: 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.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解释器不喜欢这样。

1 个答案:

答案 0 :(得分:2)

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

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