ctypes的传入参数是类型严格的,若是声明的传入参数(经过argtypes声明)是一个
POINTER(c_int)
类型,活着是结构体内部定义的类型,那么这种状况下,只有类型严格一致才能够设置。python
from ctypes import * charptr = POINTER(c_char) arg_char = charptr((c_char*5)(*b'abac')) arg_char[0] = b's' cdll.msvcrt.printf(b"%s\n",arg_char)
经过函数
cast(src,to_type)
;和C语言同样。数组
from ctypes import * charptr = POINTER(c_char) arg_char = charptr((c_char*5)(*b'\x0a\x0b\x0c\x0d')) cdll.msvcrt.printf(b"%#x\n",cast(arg_char,POINTER(c_int)).contents)