的Python - 如何解释由DLL

问题描述:

假设script.py呼叫DLLfunc()返回字节数组存储器地址和大小[写成C]使用​​的Python - 如何解释由DLL

func()返回两两件事:

  1. 本地虚拟地址的分配uint8_tarray
  2. 这个数组的大小

什么是从这个uint8_t数组中创建pythonic字节数组或列表的最佳方式,无需存储器复制。换句话说,让Python知道将指定的内存块视为pythonic字节数组?

感谢

+0

[铸造成从一个字符一个Python字符串\ [\]返回由DLL]的可能的复制(https://*.com/questions/8875185/casting-into-a-python-string-from-a-char-returned-by-a-dll) – sashoalm

我不知道,如果它的工作原理,但试试这个:

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()是复制内存还是仅仅代表它作为字节数组。 –