假設script.py
呼叫DLLfunc()
返回字節數組存儲器地址和大小[寫成C]使用的Python - 如何解釋由DLL
func()
返回兩兩件事:
- 本地虛擬地址的分配
uint8_t
array - 這個數組的大小
什麼是從這個uint8_t
數組中創建pythonic字節數組或列表的最佳方式,無需存儲器複製。換句話說,讓Python知道將指定的內存塊視爲pythonic字節數組?
感謝
假設script.py
呼叫DLLfunc()
返回字節數組存儲器地址和大小[寫成C]使用的Python - 如何解釋由DLL
func()
返回兩兩件事:
uint8_t
array什麼是從這個uint8_t
數組中創建pythonic字節數組或列表的最佳方式,無需存儲器複製。換句話說,讓Python知道將指定的內存塊視爲pythonic字節數組?
感謝
我不知道,如果它的工作原理,但試試這個:
localAddress, arraySize = func()
yourByteArray = bytearray(ctypes.string_at(localAddress, arraySize))
實際上,'ctypes.string_at()'已經返回一個'bytes'對象,如果你不需要'bytearray'。 (它代表Python 2.x,對於Python 2.x,你需要bytearray()包裝,否則它會返回簡單的字符串。) – waszil
謝謝,我不確定string_at()是複製內存還是僅僅代表它作爲字節數組。 –
[鑄造成從一個字符一個Python字符串\ [\]返回由DLL]的可能的複製(https://stackoverflow.com/questions/8875185/casting-into-a-python-string-from-a-char-returned-by-a-dll) – sashoalm