Python Ctypes-作为参数的无符号字符数组

Python Ctypes-作为参数的无符号字符数组,python,ctypes,Python,Ctypes,我试图通过Ctypes在Python中使用C中的lib,但Ctypes中的类型有问题 我的C函数有参数: fun(const char *something, const unsigned char *input, unsigned short val); 我的问题是无符号字符*数据。在C中,我传递一个数组: unsigned char input_data[2] = {0x02, 0x01}; 然后 fun(NULL,input_data,3); 它正在工作。如何在python中使用ct

我试图通过Ctypes在Python中使用C中的lib,但Ctypes中的类型有问题

我的C函数有参数:

fun(const char *something, const unsigned char *input, unsigned short val);
我的问题是无符号字符*数据。在C中,我传递一个数组:

unsigned char input_data[2] = {0x02, 0x01};
然后

fun(NULL,input_data,3);
它正在工作。如何在python中使用ctypes实现这一点?我尝试了很多方法,最后一个:

lib = cdll.LoadLibrary('mylib.so')
lib.fun.argtypes = (c_char_p, c_char_p, c_ushort)
input = (c_char_p * 2)(b'\x02',b'\x01')
lib.fun(c_char_p(None),input,c_ushort(2)))

什么不管用?看起来应该管用,虽然太复杂了。最后两行可以是
lib.fun(无,b'\x02\x01',2)
,因为声明了argtype。我发现了一个问题,在argtype声明中也应该有'c_char\u p*2'。。。lib.fun.argtypes=(c_char_p,c_char_p*2,c_ushort)感谢您的时间,不管怎么说,什么不起作用?看起来应该可以,尽管太复杂了。最后两行可以是
lib.fun(无,b'\x02\x01',2)
,因为声明了argtype。我发现了一个问题,在argtype声明中也应该有'c_char\u p*2'。。。lib.fun.argtypes=(c_char_p,c_char_p*2,c_ushort)无论如何,谢谢您抽出时间