Ctypes模块指针类型对象取值方法

Ctypes模块的指针类型对象针对具体指针类型有下面几种取值方法:

 

  1. 如果是c_void_p指向的byte类型的内存地址,用下面方法取值:
    string_at(address, size)
  2. 取POINTER(obj_type)里面的值:
    xxx.contents
    或者
    xxx[0]
    直接解除指针绑定
  3. 普通的根据内存地址取值方法:
    cast(id(变量), py_object).value
  4. 如果知道c_void_p指针指向内存中存的变量的真实类型,用下面方法:
    cast(id(变量), POINT(变量类型)).value

    跟上面的方法其实本质是一样的

 

c_byte_array虽然不是指针类型,但是取值也用到了cast()方法,所以也写在这里

# 取值:
cast(byte_array变量名, c_char_p).value

# 赋值
(c_byte * array长度)(*bytearray(字符串值, 'UTF-8'))

 

posted @ 2021-05-25 17:03  _Masami  阅读(1576)  评论(0编辑  收藏  举报