大佬教程收集整理的这篇文章主要介绍了c – 将二进制转换为浮点值的计算器 – 我做错了什么?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#include <iostream> #include <cstdio> int main() { int numSegs = 2; int numVars = 3; float * data = new float[numSegs * numVars]; for (int i = 0; i < numVars * numSegs; ++i) { data[i] = i * .23; std::cout << data[i] << std::endl; } FILE * handle = std::fopen("./sandBox.out","wb"); long elementsWritten = std::fwrite(data,sizeof(float),numVars*numSegs,handlE); if (elementsWritten != numVars*numSegs){ std::cout << "Error" << std::endl; } fclose(handlE); handle = fopen("./sandBox.out","rb"); float * read = new float[numSegs * numVars]; fseek(handle,SEEK_SET); fread(read,numSegs*numVars,handlE); for (int i = 0; i < numVars * numSegs; ++i) { std::cout << read[i] << std::endl; } }
它输出:
0 0.23 0.46 0.69 0.92 1.15 0 0.23 0.46 0.69 0.92 1.15
00 00 00 00 1f 85 6b 3e 1f 85 eb 3e d7 a3 30 3f 1f 85 6b 3f 33 33 93 3f -- -- -- -- -- -- -- --
我想直接从小数计算浮点值.例如:1f 85 6b 3e变为0.23,1f 85 eb 3e变为0.46.
我在网上尝试了一些“二进制浮动”计算器.当我输入数字的十六进制表示,0x1f856b3e时,在两个计算器中我都回来了5.650511E-20
.但我认为该值应为0.23,因为我向计算器提供了字节5-8,这些字节代表写入磁盘的第二个浮点数.
我究竟做错了什么?
1f 85 6b 3e
至:
3e 6b 85 1f
当你使用你的一个转换器转换它时,这将导致.23,例如我使用IEEE 754 Converter和Floating Point to Hex Converter允许你进行双精度转换和单精度转换.
以上是大佬教程为你收集整理的c – 将二进制转换为浮点值的计算器 – 我做错了什么?全部内容,希望文章能够帮你解决c – 将二进制转换为浮点值的计算器 – 我做错了什么?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。