在Python中,我正在通過讀取一個字符串來訪問二進制文件,然後使用struct.unpack(...)
。現在我想使用struct.pack_into(...)
寫入該字符串,但出現錯誤「無法使用字符串作爲可修改的緩衝區」。什麼是適合struct
模塊的緩衝區?什麼是適用於Python結構模塊的緩衝區
9
A
回答
6
如果您不想將其打包到特定對象中,只需使用struct.pack
即可返回字符串。
否則,ctypes.create_string_buffer
是獲取可變緩衝區的一種方法。
+0
緩衝區是簡單虛擬機的內存,所以我需要打包到特定的對象中。內存很小,但爲單個內存訪問複製128-512k不是一種選擇。 – mdm
6
正如在另一個答案中指出的,struct_pack
可能是你所需要和應該使用的。然而,array類型的對象支持緩衝協議,並且可以進行修改:
>>> import array, struct
>>> a = array.array('c', ' ' * 1000)
>>> c = 'a'; i = 1
>>> struct.pack_into('ci', a, -0, c, i)
>>> a
array('c', 'a\x00\x00\x00\x01\x00\x00\x00 ...
原始緩衝協議是一個黑客位的主要爲C擴展。它已被棄用,並在Python 3中被替換爲new C-level buffer API and memoryview objects(即將在2.7版中)。
-1
相關問題
- 1. 緩衝區溢出攻擊不適用於內核模塊
- 2. 什麼是緩衝區?
- 3. 什麼是緩衝區?什麼是緩衝讀取和寫入?
- 4. python pty模塊 - 緩衝區掛起?
- 5. Emacs/Python:在線緩衝區與塊緩衝區模式下運行python-shell
- 6. 緩衝區已滿時清除字符串緩衝區。這是什麼模式?
- 7. 什麼是凍結的Python模塊?
- 8. 什麼是正確的方式來處理結構的OpenCL緩衝區?
- 9. 什麼是基於AUTOSAR的MCAL模塊的文件結構?
- 10. 什麼是Apache Thrift和Google協議緩衝區用於?
- 11. 什麼是Perf緩衝區大小?
- 12. 這是什麼緩衝區功能?
- 13. 什麼是緩衝區寫入?
- 14. G1 GC:什麼是SATB緩衝區?
- 15. 什麼是標準輸入緩衝區?
- 16. 什麼是文件IO流緩衝區?
- 17. Qt - 什麼是樣本緩衝區?
- 18. 什麼是「別名」流緩衝區?
- 19. 什麼是LoggingSession緩衝區大小?
- 20. 什麼是存儲緩衝區?
- 21. 什麼數據格式是緩衝區?
- 22. 在java中緩衝緩衝流的結果是什麼?
- 23. 是適用於長期序列化的協議緩衝區?
- 24. 在Google的協議緩衝區中,什麼是適用於例外的協議文件/模型?
- 25. 爲什麼__dir __()不適用於python中的模塊?
- 26. Vim檢測當前緩衝區是什麼類型的緩衝區
- 27. 將結構複製到char []緩衝區
- 28. 解析緩衝區數據到結構
- 29. 關於python中的緩衝區接口
- 30. 爲什麼crtp適用於結構而不適用於課堂?
您正在使用哪個版本的python?我已經玩過一些結構,但之前沒有看到過。 – chrism1
我正在使用Python 2.6.4 – mdm