2014-02-10 108 views
1

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

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'。但是测试文件输出文件的内容是'32'而不是0x32(或者只是2)。

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

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

这最终写了字符串的十六进制值,而不是我想要的。只要你有一个包含a-f的值,它也会失败。

我也试过

file_out.write('\x' + file_contents) 

但Python解释器不喜欢那个。

回答

2

您需要将原始字符串解释为十六进制的整数。十六进制是一个基16的符号,所以加16int()电话:

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

这是辉煌的,正是我试图做的。感谢您的快速解决方案。 –

相关问题