繁体   English   中英

使用ctypes将字节numpy数组传递给C函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM