我通常会在C++中执行这样的操作,但我正在使用Python编写一个快速脚本,遇到了难题。
如果我有一个二进制列表(或者是Python存储“fread”结果的任何东西),我可以用以下方式访问其中的单个字节:buffer[0]、buffer[1]等。
我需要更改字节[8-11]以保存新的32位文件大小(即:已经有一个文件大小,我需要更新它)。在C++中,我只需获取指向该位置的指针并将其强制转换为整数类型来存储,但是在Python中,我突然意识到我不知道如何做这样的事情。
在Python中,我如何将缓冲区中特定位置的4个字节更新为整数值?
编辑
我要补充一些信息,因为似乎从解决方案中无法找到答案(尽管我可以看出它们的思路正确)。
首先,我使用的是Python 2.4(无法升级,因为是大公司的服务器),所以我的选择显然受到限制。抱歉之前没有提到,我不知道它的功能有这么少。
其次,让我们简化问题。
假设我有一个名为“myfile.binary”的二进制文件,其中包含五个字节的内容“4C53535353”(十六进制表示),这相当于文件中仅有字母“L和4个S”的ASCII表示。
如果我执行以下操作:
f = open('myfile.binary', 'rb')
contents = f.read(5)
根据Sven Marnach的回答,contents应该是一个由五个不可变的字节字符串组成的。
仅使用Python 2.4的工具,我如何将'contents'中持有的4个'S'更改为任意整数值?也就是说,给我一行代码,可以使字节索引内容[1-4]包含32位整数'myint',其值为12345678910。