用Python从文件中读取二进制数据并将其传递给C++;功能 如何将Python加载的二进制数据直接从文件传递到C++函数中,使用Cython模块中调用的数据指针和大小? loadFromMemory(const void*, size_t)

用Python从文件中读取二进制数据并将其传递给C++;功能 如何将Python加载的二进制数据直接从文件传递到C++函数中,使用Cython模块中调用的数据指针和大小? loadFromMemory(const void*, size_t),python,cython,Python,Cython,这可能是纯Python中的情况: with open('file.bin', 'rb') as f: data = f.read() loadFromMemory(data, len(data)) # How to do this in Cython? 您需要两步强制转换,首先转换为char*(Cython可以很容易地从字符串中获得该字符),然后再将其重新解释为void*: loadFromMemory(<void*>(<char*>data), le

这可能是纯Python中的情况:

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

您需要两步强制转换,首先转换为
char*
(Cython可以很容易地从字符串中获得该字符),然后再将其重新解释为
void*

loadFromMemory(<void*>(<char*>data), len(data))
loadFromMemory((数据),len(数据))
这确实假设
loadFromMemory
不希望指针在函数调用后保持有效(Cython不会自动为您管理内存,并且当
数据
被销毁时,它将被释放)


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

您需要两步强制转换,首先转换为
char*
(Cython可以很容易地从字符串中获得),然后再将其重新解释为
void*

loadFromMemory(<void*>(<char*>data), len(data))
loadFromMemory((数据),len(数据))
这确实假设
loadFromMemory
不希望指针在函数调用后保持有效(Cython不会自动为您管理内存,并且当
数据
被销毁时,它将被释放)

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