我通常在C++中執行類似這樣的操作,但是我使用python編寫了一個快速腳本,並且遇到了一堵牆。Python中,如何將32位整數放入字節數組中
如果我有一個二進制列表(或任何python存儲「fread」的結果)。我可以訪問其中的單個字節:緩衝區[0],緩衝區[1]等。
我需要更改字節[8-11]來保存新的32位文件大小(讀取:那裏已經有一個文件大小,我需要更新它)。在C++中,我只是得到一個指向該位置的指針並將其轉換爲存儲整數,但對於Python,我突然意識到我不知道如何做這樣的事情。
如何更新我的緩衝區中的特定位置的4個字節以保存python中的整數值?
編輯
我要添加更多的,因爲我似乎無法從解決方案看着辦吧(雖然我可以看到他們是在正確的軌道上)。
首先,我使用的是Python 2.4(無法升級,大公司服務器) - 這顯然限制了我的選擇。對不起,之前沒有提到,我不知道它有這麼多的功能。
其次,讓我們來做這個超簡單的。
假設我有一個名爲'myfile.binary'的二進制文件,其中包含十六進制的五字節內容'4C53535353' - 這等同於文件中單獨的字母「L和4xS」的ASCII表示。
如果我做的:
f = open('myfile.binary', 'rb')
contents = f.read(5)
內容應該(從斯文Marnach的答案)舉行的五字節的字符串不可改變。
只能使用Python 2.4的設施,我怎麼能把'內容'中保存的4個S更改爲任意整數值?即給我一行代碼,可以使字節索引的內容[1-4]包含值爲12345678910的32位整數'myint'。
你不能因爲字符串修改內容是不變的...你可以創造吃了一個新的字符串,或者使用像bytearray這樣的可變容器。 – hochl
謝謝,我很樂意創建一個新的字符串或字節數組,如果是這樣的話。我怎麼能創建一個可修改的字節數組與相同的contnets,並更新範圍[1-4],以等於我的整數的二進制表示? –
我在下面擴展了我的發帖,幷包含了Python 2.4的一個工作示例:-) – hochl