如何获取ctypes.c_char_p实例的指针地址

时间:2015-08-26 19:18:43

标签: python ctypes

我想提取ctypes.c_char_p实例指向的整数地址。

例如,在

>>> import ctypes
>>> s = ctypes.c_char_p("hello")
>>> s
c_char_p(4333430692)

我想要获取的值是 4333430692 - 内存中字符串hello\0的地址:

(lldb) x 4333430692
0x1024ae7a4: 68 65 6c 6c 6f 00 5f 70 00 00 00 00 05 00 00 00  hello._p........

我已经阅读了ctypes文档,但似乎没有任何方法可以做到这一点。最接近的是ctypes.addressof,但这只能给我指针的位置。

我想要这个的原因是因为我调用了一些实际上需要编码为整数的原始地址(其大小等于本机指针宽度)的C函数。

1 个答案:

答案 0 :(得分:8)

您可以将其投放到c_void_p并获取值:

>>> ctypes.cast(s, ctypes.c_void_p).value
4333430692