2014-02-10 175 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

這是輝煌的,正是我試圖做的。感謝您的快速解決方案。 –

相關問題