python - 获取 Cython 指针的值

标签 python c pointers cython

我正在编写一个构造 malloc 的 unsigned char * 数组的函数,然后重新调整指针。在纯 Cython 或 C 中,这很容易。您所要做的就是为函数设置返回类型,并返回指向数组的指针。完毕。但是,我已经到了需要将指向在 Cython 中创建的数组的指针返回给 Python 的地步。我知道指针只是内存地址。有什么方法可以将 Cython 指针作为 Python 对象(例如 int 或 hex,因为内存地址本质上是一个数字)返回到 Python,这样我就可以基本上在 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 .

关于python - 获取 Cython 指针的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24764048/

相关文章:

python - Django SMTP [Errno 111] 连接被拒绝

在c中将字符串转换为int

c++ - 链接器不包括未引用的数组

c - 非 int 类型的位字段?

c - 在 Swift 3 中读取 TrueType 'cmap' 格式 4 子表

python - 使用 Python Pillow 的镜头模糊效果

python - 从 Azure 外部访问 Azure Database for MySQL 单服务器

javascript - 奇怪的 JQuery 错误 "code 501, message Unsupported method OPTIONS"

c - 如何处理指向一个数组的结构组件,该数组的大小在声明结构之前是未知的?

c - 这段 C 代码的作用是什么