我刚刚写了一些访问内存的代码。我用 CheatEngine 检查了地址(在代码中),然后用 打印了它System.out
,它是不同的。我知道这是一个长值,但在十六进制中,值 2 是 00000002(这是 CheatEngine 中的结果),我用 java 得到 844287491178496。这是为什么?如何将值从地址转换为int
?更重要的是,我刚刚用 java 从内存中读取的 long 值是多少?这是我的代码:
import java.lang.reflect.Field;
import sun.misc.Unsafe;
public class Memory2 {
public static void main(String args[]){
Unsafe unsafe = getUnsafe();
long address = 0x002005C;
unsafe.getAddress(address);
System.out.println(unsafe.getAddress(address));
}
public static Unsafe getUnsafe() {
try {
Field f = Unsafe.class.getDeclaredField("theUnsafe");
f.setAccessible(true);
return (Unsafe)f.get(null);
} catch (Exception e) {}
return null;
}
}