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'))