[英]Pass byte numpy array to C function using ctypes
我想使用ctypes
将字节numpy数组传递给C
函数。 C
函数采用void *mem_address
因此我认为将其传递为以下内容:
lst = np.random.choice(np.array(range(0, 100), dtype=np.int), size=(100, 5))
lst = np.asarray(lst).tobytes()
# Pass
lst.ctypes.data_as(ctypes.c_void_p)
这会产生错误AttributeError: 'bytes' object has no attribute 'ctypes'
,这意味着ctypes
无法处理numpy。 有解决方法吗?
lst
现在是一个python bytes
对象,而不是numpy
数组。 那就是.tobytes()
所做的。
为什么不呢
lst = np.random.choice(np.array(range(0, 100), dtype=np.int), size=(100, 5))
lst.ctypes.data_as(ctypes.c_void_p)
?
我什至不知道为什么当c指针为32或64位时,您为何尝试转换为8位字节。
lst = np.asarray(lst).tobytes()
生成一个纯字节对象( [Python 3]:类字节 ( [source [,encoding [,错误]]]] ) ,该对象未由ctypes处理。
在另一方面原始LST对象( [SciPy的]:numpy.ndarray ),是。 因此,删除上面的代码行将解决此错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.