如果变量的地址为“20754060”,我们如何获取存储在该地址中的值?
a=20754060 #consist of address of some variable
我们如何才能将值存储在'20754060'位置
答案 0 :(得分:0)
你可能不会,即使你可以 - 你真的不应该。扭曲内存内容,忽略或站在GC的方式是错误的,可能会导致一些奇怪的错误。
答案 1 :(得分:0)
正如人们已经提到的:这是错误的;)
然而,这就是你如何做到的(只是一个开始)。
from ctypes import *
# create c_int (only ctype addresses work)
a = c_int(423)
# get address of a
address = addressof(a)
#print address (just for fun)
print address
# print content of address (this works for size 1)
print c_char_p(address)
#check that it is the same (423 is 1a7 in hex. Note MSB vs LSB)
print hex(423)
打印出来:
35746280
c_char_p('\xa7\x01')
0x1a7
以上只适用于ctype对象,如c_int(= ctypes.c_int)。
c_char_p函数当时获取一个字节的值。对于更复杂的对象,事情变得非常快,并且可能在某些时候存在限制。但如果你愿意,可以在这里开始阅读:
答案 2 :(得分:0)
尝试一下,就我而言,它正在工作。
ws
这给出了变量的ID,并使用该ID来检查变量的值
address = id(variable)