Dor*_*oro 3 c++ floating-point
我正在使用ReadProcessMemory来获得4个字节.该函数允许我将其表示为unsigned int.我希望将其表示为浮动; 或换句话说,使用此uint的字节表示形式为我的浮点数.我尝试过铸造它似乎不起作用.
示例:字节表示:94 4E 2D 43
uint:1127042708
float:173.3069458 ..
任何帮助,将不胜感激.
最安全的方法(考虑到可能的对齐问题)是使用联合
#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;
}
Run Code Online (Sandbox Code Playgroud)
但请注意,即使您知道浮点数是标准IEEE754格式,也可能存在字节序问题.
小智 5
ReadProcessMemory()将指针指向void,因此您可以将其指向a float.
float f;
ReadProcessMemory(hProcess, lpBaseAdress, &f, sizeof(f), NULL);
Run Code Online (Sandbox Code Playgroud)
请注意,这会在什么时候破坏sizeof(unsigned int) != sizeof(float).
转换将不起作用,因为它将取值而不是整数的表示.