2017-02-22 12 views
0

皆、今私は.dllファイルを導入するためにPythonでのctypesのモデルを使用しています ctypesのPythonでのボイドポインタ配列

。私のソースコードでIは、以下のフレームバッファは、例えば、フレキシブルタイプの画素データの配列を指すポインタである

bool getFrameFromStream(char* streamName, const void* framebuffer, int frame_number, int overwriteMaxPixelVal=-1)

にC++で機能を有しますなどのchar、uint16の、私はPython用newbee思いますので、私はすなわち

framebuffer = ctypes.create_string_buffer(1000000) 
ctypes.cast(framebuffer, ctypes.c_void_p) 

私の質問、ctypes.create_stream_bufferを使用使用量がバッファ内のすべての要素がどのようなタイプのものとすることができる約束している場合ですか?最初の要素はフレキシブルですが、他の要素はまだcharでなければなりませんか?そうであれば、適切な変数を転送する場合はどうすればよいですか。あなたはバッファを持っていて、別のタイプに変換したい場合は

多くのおかげ

答えて

0

は、あなたがstructを使用する必要があります。たとえば、あなたが持っている場合:

struct FrameBuffer { 
    int a; 
    int b; 
    double d; 
    float g; 
} 

を次にあなたがPythonで変数my_dataでこのスタックを表す文字列を持っている場合、あなたはコールでそれを解凍できます。

import struct 
# ... 
mvars = struct.unpack("iidf",my_data); 

myvarsがされますそこから解凍されたデータのタプル。

私があなたに与えたlinkの例を確認してください。

関連する問題