首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++中将uint转换为浮点数

在C++中将uint转换为浮点数
EN

Stack Overflow用户
提问于 2011-02-20 21:54:05
回答 4查看 12.9K关注 0票数 3

我使用ReadProcessMemory来获取4个字节。该函数允许我将其表示为一个无符号整数。我希望将其表示为一个浮点数;或者换句话说,将此uint的字节表示用于我的浮点数。我试过选角,但似乎不起作用。

示例:字节表示: 94 4E 2D 43

单位: 1127042708

浮点数: 173.3069458..

任何帮助都将不胜感激。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-20 22:06:47

ReadProcessMemory()需要一个指针来表示空,所以要由你来决定是否将它指向float

代码语言:javascript
运行
复制
float f;
ReadProcessMemory(hProcess, lpBaseAdress, &f, sizeof(f), NULL); 

请注意,当使用sizeof(unsigned int) != sizeof(float)时,这将中断。

强制转换不起作用,因为它将接受值,而不是整数的表示形式。

票数 5
EN

Stack Overflow用户

发布于 2011-02-20 22:01:22

代码语言:javascript
运行
复制
UINT d= 0x432D4E94;
float f= *(float*)&d; // 173.30695
票数 5
EN

Stack Overflow用户

发布于 2011-02-20 22:05:13

最安全的方法(考虑到可能的对齐问题)是使用联合

代码语言:javascript
运行
复制
#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也可能会出现问题。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5057428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档