如何使用 ctypes "cast" 函数将一种整数格式转换为另一种整数格式,以获得与 C 中相同的效果:
int var1 = 1;
unsigned int var2 = (unsigned int)var1;
?
>>> cast((c_int*1)(1), POINTER(c_uint)).contents
c_uint(1L)
>>> cast((c_int*1)(-1), POINTER(c_uint)).contents
c_uint(4294967295L)
比使用 cast() 更简单的是在变量上使用 .value:
>>> from ctypes import *
>>> x=c_int(-1)
>>> y=c_uint(x.value)
>>> print x,y
c_long(-1) c_ulong(4294967295L)
您可能想看看http://docs.python.org/2/library/ctypes.html#type-conversions
一个例子是ctypes.cast((ctype.c_byte*4)(), ctypes.POINTER(ctypes.c_int))
整数到结构类型转换
from ctypes import *
class head(Structure):
_fields_=[
('x',c_ubyte),
('y',c_ubyte)
]
x = c_uint(0x3234)
px= cast(pointer(x),POINTER(head))
print(px[0].x)
print(px[0].y)