2017-10-05 29 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

相关问题