いくつかの python スクリプトと対話する C ライブラリにラッパー関数があります。
int func(uint8_t *_data, int _len);
Pythonの配列またはリストをこの関数に渡したいです。どうやってするの ?
C 配列型を作成する最も簡単な方法は、 の適切な型で乗算演算子を使用するctypes
ことです。これにより、新しい型オブジェクトが自動的に生成されます。例えば...
>>> import ctypes
>>> ctypes.c_ubyte * 3
<class '__main__.c_ubyte_Array_3'>
...同じ数の引数で構築できます...
>>> (ctypes.c_ubyte * 3)(0, 1, 2)
<__main__.c_ubyte_Array_3 object at 0x7fe51e0fa710>
...または、*
演算子を使用して、リストの内容で呼び出すことができます...
>>> (ctypes.c_ubyte * 3)(*range(3))
<__main__.c_ubyte_Array_3 object at 0x7fe51e0fa7a0>
...だから、次のようなものが必要になります...
import ctypes
my_c_library = ctypes.CDLL('my_c_library.dll')
def call_my_func(input_list):
length = len(input_list)
array = (ctypes.c_ubyte * length)(*input_list)
return my_c_library.func(array, length)
my_list = [0, 1, 2]
print call_my_func(my_list)