【发布时间】:2015-12-22 23:39:30
【问题描述】:
我正在尝试将浮点数写入内存,但它不起作用。
Kernel32.java
public abstract boolean WriteProcessMemory(Pointer paramPointer1, long paramLong, Pointer paramPointer2, int paramInt, IntByReference paramIntByReference);
MemoryWriting.java
public void writeMemory(int address, float[] data) {
int size = data.length;
Memory toWrite = new Memory(size);
for (int i = 0; i < size; i++) {
toWrite.setFloat(i, data[i]);
}
kernel32.WriteProcessMemory(process, address, toWrite, size, null);
}
编辑:
还是一样的问题
public void writeMemory(int address, float[] data) {
int size = data.length;
Memory toWrite = new Memory(size);
for (int i = 0; i < size; i++) {
toWrite.setFloat(i * Float.SIZE / 8, data[i]);
}
kernel32.WriteProcessMemory(process, address, toWrite, size, null);
}
【问题讨论】:
-
WriteProcessMemory的size参数是要写入的字节数,而不是浮点元素的数量。 -
解释一下?它可以很好地写入字节。
-
一个浮点数需要一个大小为 4 字节的缓冲区。如果您指示缓冲区大小为“1”,则只会读取浮点数的第一个字节。
size参数需要是要写入的浮点元素数量的四倍。 -
so size = data.length * 4?
-
没用,同样的错误