7. Python与C之强制类型转换

  1. 数组与指针之间的转换

    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)
  2. 非兼容类型的转换

    经过函数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)
相关文章
相关标签/搜索