2017-10-05 84 views
-6

我的二進制文件test.bin包含如何替換二進制文件中的字節?

11 22 33 44 55 66 ... 

我想修改的第三位置AA和我的文件應該像

11 22 33 AA 55 66 .... 
+3

您還沒有問過任何問題或顯示過給您帶來麻煩的代碼。你爲什麼用Python和Perl標記這個?你在用哪種語言? – Borodin

+0

爲什麼用** Python-Requests **標記問題?你似乎沒有使用'Requests'庫,你的問題與HTTP無關。 – Borodin

回答

-1

打開以二進制方式更新文件,尋找到在文件中的所需位置,然後寫入替換字符。以下將在Python 2和3中工作,並用0xAA覆蓋文件的第4個字節(如果從0開始計數,則爲第3個位置)。

with open('test.bin', 'rb+') as f: 
    f.seek(3) 
    f.write(b'\xAA') 
+0

謝謝..它工作正常.. –

+0

如果我的變量保存十六進制字符串,以及我們將如何通過變量做上述實驗? 我試圖這樣做如下, X = '7A' Y = INT(X,16) Z = '%X' %Y 打印(Z) 張開( 'TEST.bin,燒寫', 'RB +')爲f: \t f.seek(3) \t f.write(BZ) 而且它投擲的錯誤一樣, 「回溯(最近通話最後一個): 文件 「3.py」,行7,在 f.write(z) TypeError:'str'不支持緩衝接口 「 –

+0

@NarendraThamatam:你需要寫一個'bytes'對象,而不是'str'對象。 BTW'7A'是一個包含2個字符的字符串。我認爲你需要寫入值爲0x7A的單個字節。用'binascii.unhexlify(s)'將十六進制字符串轉換爲'binascii.unhexlify( '7A')'將返回字節對象'b'z''和'binascii.unhexlify( 'AA')'將返回'B'\ xaa'' – mhawke

相關問題