微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ReadWriteMemory 将内存读取为 int 而不是 float

如何解决ReadWriteMemory 将内存读取为 int 而不是 float

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()

process = rwm.get_process_by_name("javaw.exe")
process.open()
module_base = 0x6FBB0000
static_address_offset = 0x007FD7C0
static_address = module_base + static_address_offset
pitch_pointer = process.get_pointer(static_address,offsets=[0xB8,0x1C8,0x1D0,0x178,0xAC,0x8C])
camera_pitch = process.read(pitch_pointer)
print(camera_pitch)

我正在尝试使用我在作弊引擎中获得的指针来获取相机间距,脚本工作正常,但相机间距是一个浮点值,而 process.read(pitch_pointer) 返回一个整数,例如设置 { {1}} 到 1108138163 而不是 35.2。找不到如何在任何地方获得浮点数。

解决方法

您可以使用 struct 模块。

像这样:

>>> import struct
>>> i_value = 1108138163
>>> struct.unpack("@f",struct.pack("@I",i_value))[0]
35.21162033081055

也就是说,您将整数转换为 4 字节数组,然后将其转换为浮点数。 struct.unpack 总是返回一个元组,在这种情况下是单个值,所以使用 [0] 来获取它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。