在python中如何将地址解引用为整数?

在python中如何将地址解引用为整数?,python,typecast-operator,Python,Typecast Operator,我有一个类似于0x6041f0的地址。我知道外面有一个整数。在C语言中,我只需执行*(int*)0x6041f0即可获得该地址上的整数值 如何在Python中实现同样的功能 PS:我正在编写一个使用gdb模块的Python脚本。正在调试的实际程序是在C++中。因此,需要进行大量的低级操作。类似这样的操作: $ python Python 2.7.9 (default, Mar 19 2015, 22:32:11) [GCC 4.8.4] on linux2 Type "help", "copy

我有一个类似于
0x6041f0
的地址。我知道外面有一个整数。在C语言中,我只需执行
*(int*)0x6041f0
即可获得该地址上的整数值

如何在Python中实现同样的功能

PS:我正在编写一个使用
gdb
模块的Python脚本。正在调试的实际程序是在C++中。因此,需要进行大量的低级操作。

类似这样的操作:

$ python
Python 2.7.9 (default, Mar 19 2015, 22:32:11) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from ctypes import *
>>> c_int_p = POINTER(c_int)
>>> x = c_int(4)
>>> cast(addressof(x), c_int_p).contents
c_int(4)
带着那个艺术品地址:)

>>强制转换(0x6041f0,c_int_p)
>>>强制转换(0x6041f0,c_int_p)。内容
分段故障

请参阅:作为参考

我是否可以问一下,为什么/如何在Python程序中操作类似
0x6041f0
的地址?您是否正在使用
gdb.Value
对象?我对GDB Python API不太熟悉,但从现在的情况来看,如果有一个
GDB.Value
表示从指针强制转换的整数,则调用
Value.cast
方法将其强制转换为指针,然后调用
Value.dereference
将其取消引用。我不知道是否有任何考虑因素会使绕过它并使用ctypes成为一个坏主意,但使用提供的API似乎是最安全的。您是指python脚本运行的进程中的指针还是调试进程中的指针?因为这将产生巨大的变化。@user2357112你是对的。您已经概述了将wrt转换为GDB API的正确方法。但我想知道一种在Python中执行此操作的通用方法,以防在独立Python中再次遇到这种情况。@textshell忽略GDB。我只是按照某人的要求添加了一些上下文。我理解您担心在其他进程中取消对进程指针的引用是没有意义的。
>>> cast(0x6041f0, c_int_p)
<__main__.LP_c_int object at 0x7f44d06ce050>
>>> cast(0x6041f0, c_int_p).contents
Segmentation fault