Ctypes模块的指针类型对象针对具体指针类型有下面几种取值方法:
- 如果是c_void_p指向的byte类型的内存地址,用下面方法取值:
string_at(address, size)
- 取POINTER(obj_type)里面的值:
xxx.contents
或者
xxx[0]
直接解除指针绑定
- 普通的根据内存地址取值方法:
cast(id(变量), py_object).value
- 如果知道c_void_p指针指向内存中存的变量的真实类型,用下面方法:
cast(id(变量), POINT(变量类型)).value
跟上面的方法其实本质是一样的
c_byte_array虽然不是指针类型,但是取值也用到了cast()方法,所以也写在这里
# 取值: cast(byte_array变量名, c_char_p).value # 赋值 (c_byte * array长度)(*bytearray(字符串值, 'UTF-8'))