[英]Cannot read float value
试图读取浮点值但它给出错误它说地址必须是 int 即使我使用 read_float 并且它出错它无法读取它说地址必须是 int
from pymem import *
from pymem.process import *
pm = pymem.Pymem("game.exe")
module = module_from_name(pm.process_handle, "game.exe").lpBaseOfDll
def GetPtrAddr(base, offsets):
addr = pm.read_float(base)
for i in offsets:
if i != offsets[-1]:
addr = pm.read_float(addr + i)
return addr + offsets[-1]
northsouth = GetPtrAddr(module + 0x01B20C50, [0x38, 0x60, 0x290, 0x68, 0x140, 0x0, 0x3C])
print(pm.read_float(northsouth))
Traceback (most recent call last):
File "C:\Users\user\Desktop\program\3erfwq.py", line 14, in <module>
northsouth = GetPtrAddr(module + 0x01B20C50, [0x38, 0x60, 0x290, 0x68, 0x140, 0x0, 0x3C])
File "C:\Users\user\Desktop\program\3erfwq.py", line 12, in GetPtrAddr
addr = pm.read_float(addr + i)
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\pymem\__init__.py", line 650, in read_float
value = pymem.memory.read_float(self.process_handle, address)
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\pymem\memory.py", line 377, in read_float
bytes = read_bytes(handle, address, struct.calcsize('f'))
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\pymem\memory.py", line 97, in read_bytes
raise TypeError('Address must be int: {}'.format(address))
TypeError: Address must be int: 1994287160.0
read_float方法尝试从 memory 地址读取浮点数。 您指定的地址必须是 int - 但您传递的是浮点数。
专注于参数addr + i
。 由于您初始化了addr = pm.read_float(base)
它肯定是一个浮点数,并且添加i
不会改变它。
因此,要么使用addr = pm.read_int(base)
进行初始化,要么继续读取浮点数,但随后您必须将其转换为 int,如下所示:
addr = pm.read_float( int(addr + i) )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.