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)