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

标签 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 函数,这些函数实际上需要编码为整数的原始地址(其大小等于 native 指针宽度)。

最佳答案

您可以将其转换为 c_void_p 并获取值:

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

关于python - 如何获取 ctypes.c_char_p 实例的指针地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32234970/

相关文章:

python - 如何检索和操作 ndb StructuredProperty 对象?

python - 什么时候 chr(ord(c)) 不等于 Python 中的 c?

Python ctypes - 使用 GetVersionEx 函数获取 0

python - 零终止动态数组作为 Python 中的返回值

python - 通过 readinto() 将二进制数据解析为 ctypes 结构对象

python - Windows错误: [Error 127] The specified procedure could not be found

c++ - 使用 ctypes 将结构传递给 native 库时遇到问题

python - 通过计算机视觉进行稳健的手部检测

Python tabula read_pdf 打开java控制台窗口

python - 如何在 Tensorflow 中进行列求和?