我有一个文件夹,里面装满了需要4次方字节翻转的非常大的文件。所以本质上,我需要将文件作为二进制文件来读取,调整位的序列,然后用调整后的位来写一个新的二进制文件。在
本质上,我要做的是读取一个十六进制字符串hexString
,如下所示:
“00112233AABBCCDD”
然后写一个如下所示的文件: “33221100DDCCBBAA”
(即,每两个字符是一个字节,我需要将字节翻转4次方)
一般来说,我对python和编码非常陌生,目前我完成这项任务的方式非常低效。我的代码当前如下所示:
import binascii
with open(myFile, 'rb') as f:
content = f.read()
hexString = str(binascii.hexlify(content))
flippedBytes = ""
inc = 0
while inc < len(hexString):
flippedBytes += file[inc + 6:inc + 8]
flippedBytes += file[inc + 4:inc + 6]
flippedBytes += file[inc + 2:inc + 4]
flippedBytes += file[inc:inc + 2]
inc += 8
..... write the flippedBytes to file, etc
我粘贴在上面的代码准确地完成了我的需要(注意,我的实际代码有几行额外的行:“十六进制字符串。替换()“删除不必要的十六进制字符-但我省略了这些字符,以使上面的内容更易于阅读)。我的终极问题是,用更大的文件运行我的代码需要非常长的时间。我需要翻转的一些文件大小几乎是2gb,而代码要花将近半天的时间才能完成一个文件。我有几十个文件需要运行这个,所以时间框架根本不实用。在
有没有更有效的方法来翻转文件中的十六进制值的4次幂?在
。。。。值得一提的是,有一个叫做WinHEX的工具可以手动完成这项工作,而且只需一分钟就可以翻转整个文件。。。。我只是希望用python实现自动化,这样我们就不必每次都手动使用WinHEX
这里有一个小的struct让你开始:
要对大输入全速执行此操作,请使用struct.iter_unpack
你想把4字节的整数从小端数转换成大端数,反之亦然。您可以使用^{} 模块来完成此操作:
相关问题 更多 >
编程相关推荐