从Python中读取文件中的二进制数据并将其传递给C ++函数

时间:2017-07-06 18:21:56

标签: python cython

如何将Python加载的二进制数据直接从文件传递到C ++函数,获取Cython模块中调用的数据指针和大小?

loadFromMemory(const void*, size_t)

这可能是它在纯Python中的外观:

with open('file.bin', 'rb') as f:
    data = f.read()
    loadFromMemory(data, len(data))  # How to do this in Cython?

1 个答案:

答案 0 :(得分:0)

你需要先进行两步演绎char*(Cython可以轻松地从字符串中获取),然后再将其重新解释为void*

loadFromMemory(<void*>(<char*>data), len(data))

这假设loadFromMemory不希望指针在函数调用后保持有效(Cython不会自动为您管理内存,并且data时它将被释放破坏)。

(跳过转换为char*并直接转换为void*将获取Python对象的地址,这不是您想要的)