繁体   English   中英

无法读取浮点值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM