我使用ReadProcessMemory来获取4个字节。该函数允许我将其表示为一个无符号整数。我希望将其表示为一个浮点数;或者换句话说,将此uint的字节表示用于我的浮点数。我试过选角,但似乎不起作用。
示例:字节表示: 94 4E 2D 43
单位: 1127042708
浮点数: 173.3069458..
任何帮助都将不胜感激。
发布于 2011-02-20 22:06:47
ReadProcessMemory()需要一个指针来表示空,所以要由你来决定是否将它指向float。
float f;
ReadProcessMemory(hProcess, lpBaseAdress, &f, sizeof(f), NULL); 请注意,当使用sizeof(unsigned int) != sizeof(float)时,这将中断。
强制转换不起作用,因为它将接受值,而不是整数的表示形式。
发布于 2011-02-20 22:01:22
UINT d= 0x432D4E94;
float f= *(float*)&d; // 173.30695发布于 2011-02-20 22:05:13
最安全的方法(考虑到可能的对齐问题)是使用联合
#include <stdio.h>
int main(int argc, const char *argv[])
{
union FloatOrUInt
{
float asFloat;
unsigned int asUInt;
} fu;
fu.asUInt = 1127042708;
printf("Float value = %0.6f\n", fu.asFloat);
return 0;
}但是,请注意,即使您知道浮点数是标准的IEEE754格式,endianness也可能会出现问题。
https://stackoverflow.com/questions/5057428
复制相似问题