2

如何使用 ctypes "cast" 函数将一种整数格式转换为另一种整数格式,以获得与 C 中相同的效果:

int var1 = 1;
unsigned int var2 = (unsigned int)var1;

?

4

4 回答 4

3
>>> cast((c_int*1)(1), POINTER(c_uint)).contents
c_uint(1L)
>>> cast((c_int*1)(-1), POINTER(c_uint)).contents
c_uint(4294967295L)
于 2013-06-18T10:44:01.150 回答
2

比使用 cast() 更简单的是在变量上使用 .value:

>>> from ctypes import *
>>> x=c_int(-1)
>>> y=c_uint(x.value)
>>> print x,y
c_long(-1) c_ulong(4294967295L)
于 2016-06-03T12:13:19.103 回答
0

您可能想看看http://docs.python.org/2/library/ctypes.html#type-conversions

一个例子是ctypes.cast((ctype.c_byte*4)(), ctypes.POINTER(ctypes.c_int))

于 2013-06-18T10:34:58.327 回答
0

整数到结构类型转换

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)
于 2018-05-11T04:26:20.907 回答