ctypes与C类型

上面的是ctype类型,与标准c类型,python封装类型

ctypes的类型都是由python封装,即第三列,所以基本的组成只有string,bytes,int,float,bool

各种构造

 首先构造函数接受任何真值表达式,这些类都有对应的默认可选参数,即默认初始值。

因为ctypes中的类型是由python封装,所以还是遵循python语言的特性,那就是创建之后基本类型就不可变了。但是
ctypes里面都是封装后的容器,所以常用基本类型可变,但是对于指针来说,对于这个赋值,其实已经改变了指针指向的位置。那么就违背了数组,指针的本意。

这里的t是使用下面代码编译出来的so,并且加载修改。

extern "C"
void show(char * str)
{
    *str = 'b';
}

因为bytes类型是不可变的,所以最好是传入可变,虽然这里可以修改,但是不推荐,所以我们使用  create_string_buffer()

和 create_unicode_buffer()前者是ascii,后者是unicode。我们可以通过raw进行查看。

下面的是linux

下面的是windows

扫描二维码关注公众号,回复: 6044130 查看本文章

可以看到windows的unicode是2个字节,linux是4个字节。而且只有string类型有raw,unicode没有。

猜你喜欢

转载自blog.csdn.net/rubikchen/article/details/89420813