我有一個文件夾,裏面裝滿了需要通過4次方翻轉的非常大的文件。所以基本上,我需要將文件讀作二進制文件,調整位的順序,然後編寫一個新的二進制文件文件的位已調整。Python - 有效的方法來翻轉文件中的字節?
從本質上說,我想要做的是讀一個十六進制字符串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
我上面粘貼準確代碼完成我需要什麼(請注意,我的實際代碼有一些額外的臺詞:「hexString.replace()」中刪除不必要的十六進制字符 - 但是我已經把這些留在了上面,以使上面更容易閱讀)。我的最終問題是需要極長的時間才能使用較大的文件運行我的代碼。我需要翻轉的一些文件大小几乎爲2GB,代碼幾乎需要半天才能完成一個文件。我有幾十個文件需要運行,所以時間表簡直不切合實際。
是否有更有效的方法來翻轉4的冪的文件中的十六進制值?
....對於它的價值,有一個名爲WinHEX的工具,可以手動執行此操作,並且只需要最多一分鐘即可翻轉整個文件....我只是希望用python自動執行此操作我們不必每次都手動使用WinHEX
所以...你想改變32位數字的字尾嗎? – kay
所以,你想要將你的二進制4字節整數從小端轉換爲大端或反過來?你應該使用['struct'](https://docs.python.org/3/library/struct.html)。 –
[python unpack little endian]可能的重複(https://stackoverflow.com/questions/12163549/python-unpack-little-endian) –