Python 获取ctypes.c_ulong指针的值?
例如:Python 获取ctypes.c_ulong指针的值?,python,ctypes,Python,Ctypes,例如: pointer = ctypes.POINTER(ctypes.c_ulong) b = pointer(ctypes.c_ulong(20)) b的int值是多少 你的意思是,取消引用b以获得c_ulong(20)?那是b.contents。或者你的意思是,看看指针在内存中的什么位置,好像它是一个整数而不是指针?这是ctypes.cast(b,ctypes.c_ulong)(如果您的平台上有一个长的指针)。非常感谢b.内容是!!或者只使用b[0],它调用类型的getfunc来返回Py
pointer = ctypes.POINTER(ctypes.c_ulong)
b = pointer(ctypes.c_ulong(20))
b的int值是多少 你的意思是,取消引用
b
以获得c_ulong(20)
?那是b.contents
。或者你的意思是,看看指针在内存中的什么位置,好像它是一个整数而不是指针?这是ctypes.cast(b,ctypes.c_ulong)
(如果您的平台上有一个长的指针)。非常感谢<代码>b.内容是!!或者只使用b[0]
,它调用类型的getfunc
来返回Python整数,例如b[0]==20
。此外,您只能强制转换为指针类型,因此第二个建议将失败。从其他指针获取地址的最快方法是使用缓冲协议:ctypes.c\u void\u p.from\u buffer(b).value
。或者使用ctypes.cast(b,ctypes.c\u void\u p).value
,但是cast
效率不高,因为它是使用外部函数调用实现的。请注意,只能强制转换到指针类型:types.cast(b,ctypes.c\u ulong)
是非法的。但是,您可以改为说types.cast(b,ctypes.c\u void\u p.value)
。