获取Cython指针的值
问题内容:
我正在编写一个构造一个mallocunsigned char *
数组,然后重新调整指针的函数。在纯Cython或C中,这很容易。您所要做的就是在函数上设置返回类型,然后将指针返回到数组。做完了
但是,我已经到达需要将指向在Cython中创建的数组的指针返回给Python的地步。我知道指针只是内存地址。有什么方法可以将Cython指针作为python对象返回给Python(例如int或hex,因为内存地址本质上是一个数字),这样我就可以基本上在python中管理指针了?
我试图像这样返回指针的值:
cdef unsigned char array[8]
def return_pointer():
return &array
这当然不起作用,因为无法完成转换。Cython抱怨Cannot convert 'unsigned char (*)[8]' to Python object
。有什么建议?
编辑:
我不需要访问Python中指针所引用的内存地址中的值,只需传递指针即可。然后,我计划使用Python对象指针,并以其作为参数调用c函数。
问题答案:
您可以将指针转换为适当的C类型,然后由Cython将其转换为Python整数。正确的C类型是uintptr_t
通过<stddef.h>
可以在Cython中使用的from libc.stdint cimport uintptr_t
。演员表当然是写的<uintptr_t>array_or_pointer
。