我想將二進制文件轉換爲特定格式的十六進制文件並將其保存爲文本文件。從二進制文件創建十六進制文本文件
最終產品應該是這樣的:
"\x7f\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52"
輸入是一個可執行文件「一」。 這是我當前的代碼:
with open('a', 'rb') as f:
byte = f.read(1)
hexbyte = '\\x%02s' % byte
print hexbyte
與這幾個問題:
- 僅打印第一個字節。
- 結果是 「\ x」 和一箱這樣的:
00 7f
在終端它看起來完全是這樣的:
爲什麼會這樣呢?最後,如何將所有的十六進制文件保存到文本文件中以獲得上面顯示的最終產品?
編輯:能夠將文件作爲文本保存
txt = open('out.txt', 'w')
print >> txt, hexbyte
txt.close()
你混淆了一個十六進制數據的二進制表示。您的「最終產品」不是十六進制,而是二進制。請向我們顯示輸入數據。 – msvalkon
而且你只讀過1個字節的數據,因爲你說'byte = f.read(1)',而且你沒有循環或其他方法來讀取更多的數據。我不知道'\\\\'應該做什麼。 – msvalkon
如果你想將字節轉換爲十六進制:'「0x%02X」%ord(byte)'或'「0x {:02}」.format(ord(byte))' – msvalkon