如何根据16进制数据得到float 类型的值
想往内存中写入一个变量:可以是一个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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
现在用的大多是基于IEEE754标准的浮点数格式,参照格式反算一下就是了:
http://zh.wikipedia.org/wiki/IEEE_754
另外还要考虑字节序的问题.
直接强制类型转换,不用copy来copy去。
又是double,又是float,真看不懂你的代码。
我写个double的例子给你看看
输出为
405edd2f1a9fbe77
123.456000
回复 3# noword2k
如果不知道类型呢?
可也是float 也可以是 double
可以把float先转换为double。
不过程序里最好统一使用一种浮点数,不要一会儿float,一会儿double.