我很抱歉,但是我通常很难阅读ctypes文档。。。在
如果我有一个C函数,它接受一个const unsigned char*指针,并且我知道它既不会修改传入的字符串,也不会在函数调用之外保留对它的引用,那么直接传入一个指向python字符串字节的指针是很有意义的。在
我遵循2种方法
approach1:
cdll.func.restype=c_int
cdll.func.argtypes[c_int,c_int,c_int,c_char_p,c_int,c_char_p,c_int]
cdll.func(0,1,0,'11011101001111111000110011111',60,'0',80)
cdll function
int func(inta,int b,int c, const unsigned char* cptr1 ,int ,const unsigned char* cptr2,int d){
// do some string operation
return 0;
}
approach2:
v ='11011101001111111000110011111'
j = '0'
cdll.func(0,1,0,v,60,j,80)
int func(inta,int b,int c, const unsigned char* cptr1 ,int ,const unsigned char* cptr2,int d){
// do some string operation
return 0;
}
I done some research here link1
但这没用,真的用python做类型转换吗?但如果我这样做,它确实有效。提前谢谢
以下是我从ctypes文档中得出的结论:
在python3中,}没有被重命名/更改。所以
ctypes
函数create_string_buffer
和{create_string_buffer
确实创建了一个字节缓冲区。在试图传递u_uchars:
^{pr2}$相关问题 更多 >
编程相关推荐