gpt4 book ai didi

c++ - 使用 c_types 将 python 数组传递给 c 函数

转载 作者:太空宇宙 更新时间:2023-11-04 03:55:30 25 4
gpt4 key购买 nike

我在 C 库中有一个包装函数,它与一些 python 脚本交互。

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)

关于c++ - 使用 c_types 将 python 数组传递给 c 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16773031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com