如何根据16进制数据得到float 类型的值

发布于 2022-10-15 10:15:25 字数 383 浏览 45 评论 0

想往内存中写入一个变量:可以是一个double float int 类型,用一个int a[2]来存放。
然后将int a[2]以16进制写入文件,读取文件的时候可以根据不同的数据类型将16进制数据解析出来么?

如:
int a[2];
float b = 12.3;
memcpy(a, &b, 4);
FILE * pFile = fopen ("myfile.txt","w");
fprintf(pFile,"%x", a[0]);

然后如何根据文件里的16进制数据得到float b的值呢?
如不能,如何将这种不知道数据类型的变量按16进制存放到文件?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

咋地 2022-10-22 10:15:25

现在用的大多是基于IEEE754标准的浮点数格式,参照格式反算一下就是了:
http://zh.wikipedia.org/wiki/IEEE_754

另外还要考虑字节序的问题.

べ映画 2022-10-22 10:15:25

直接强制类型转换,不用copy来copy去。

她说她爱他 2022-10-22 10:15:25

又是double,又是float,真看不懂你的代码。
我写个double的例子给你看看

#include <stdio.h>

int main()
{
        double a = 123.456;
        char file[200];
        double b;

        // write
        sprintf( file, "%llx", *(long long*)&a );

        // test
        printf( "%s\n", file );

        // read
        sscanf( file, "%llx", (long long*)&b );

        // test
        printf( "%lf\n", b );

        return 0;
}

输出为
405edd2f1a9fbe77
123.456000

用心笑 2022-10-22 10:15:25

回复 3# noword2k

如果不知道类型呢?
可也是float 也可以是 double

梦开始←不甜 2022-10-22 10:15:25

回复  noword2k

如果不知道类型呢?
可也是float 也可以是 double
leaaaa 发表于 2011-04-13 22:46

可以把float先转换为double。
不过程序里最好统一使用一种浮点数,不要一会儿float,一会儿double.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文