的Python - 如何解释由DLL
问题描述:
假设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))
+0
实际上,'ctypes.string_at()'已经返回一个'bytes'对象,如果你不需要'bytearray'。 (它代表Python 2.x,对于Python 2.x,你需要bytearray()包装,否则它会返回简单的字符串。) – waszil
+0
谢谢,我不确定string_at()是复制内存还是仅仅代表它作为字节数组。 –
[铸造成从一个字符一个Python字符串\ [\]返回由DLL]的可能的复制(https://stackoverflow.com/questions/8875185/casting-into-a-python-string-from-a-char-returned-by-a-dll) – sashoalm