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)
相關文章
相關標籤/搜索