2017-07-06 6 views
0

Pythonによって読み込まれたバイナリデータをファイルから直接C++関数に渡し、Cythonモジュールで呼び出されるデータポインタとサイズを取得する方法はありますか?バイナリデータをPythonでファイルから読み込んでC++関数に渡す

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? 

答えて

0

あなたは第二に、その後(Cythonは、文字列から簡単に取得することができます)char*に最初のキャスト2つのステップを必要とし、 void*としてそれを再解釈:

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

これは(loadFromMemoryは、ポインタは、関数呼び出しの後に、有効なままに期待していないことを前提としていませんCythonはメモリを自動的に管理しません。dataが破壊されると解放されます)。

char*へのキャストをスキップし、ちょうどvoid*にまっすぐにキャストすると、あなたが望むものではありませんこれは、Pythonオブジェクトのアドレスを取得します)

関連する問題