任何人都可以显示如何正确地将二进制表示的数据转换为C中的双精度值。例如,我有8个无符号字符值被转换为双精度值(让我们将其命名为缓冲区)。所以缓冲区[0]的0位是LSB,缓冲区[7]的7位是MSB。非常感谢提前!从c中的二进制文件读取双精度值
3
A
回答
3
只投它,我觉得
char buf[8];
double x;
...
x = *((double*) buf);
4
IF下面都是真:
- 你的机器是little-endian的。
- 在您的机器上,
sizeof(double) == 8
- 您的机器的“字节”的想法与保存数据的机器(不是所有机器都使用八位字节/ 8位字节)的想法相同。
- 您的机器的浮点格式与生成/保存数据的机器的浮点格式相匹配。
你可以简单地读取8个字节到一个数组中,并做了铸件(假设“FD”被打开的文件描述符):
char bytes[8];
fread(&bytes, 8, 1, fd);
double d = *((double*)bytes);
更普遍,但是,我建议不保存这样的二进制数据。是的,它曾经是常见的,许多人仍然这样做,但是对于现代硬件来说,这是非常不必要的,并且会导致这种情况,如果您的平台与其写入的平台完全匹配,那么只能轻松地对其进行反序列化到磁盘。选择一种可移植的格式 - 如果可以的话,使用基于人类可读的基于UTF-8的格式 - 并使用它。
相关问题
- 1. C++从二进制文件中写入和读取双精度
- 2. 如何从C++中的文件中读取双精度值
- 3. 从控制台读取双精度值
- 4. C++读取包含数字类型双精度的二进制文件
- 5. 从文件中读取双精度
- 6. C#从读取文本文件中读取二进制文件
- 7. 从文件中的Java读取的双精度值
- 8. 读取时出现错误值从java中的二进制文件中双精度
- 9. 二进制C++中的文件读取
- 10. 读取C中的二进制文件
- 11. 从二进制文件(C)中读取非固定长度
- 12. 如何从文件中读取双精度值?
- 13. 如何从二进制文件读取双精度值并将其保存在向量中
- 14. 从java中的文本文件中读取双精度
- 15. 如何从文件中有效读取十六进制双精度数据?
- 16. 从文件中读取二进制数
- 17. 如何获得C中双精度的二进制数?
- 18. 从Python/NumPy中包含整数和双精度的二进制文件读取或构建数组
- 19. 从二进制文件中读取双精度数据(到类中) - 小数点不显示
- 20. 从文件中读取字符串和双精度的组合
- 21. 二进制文件读取性能C++
- 22. 二进制文件读取/用C
- 23. 读取二进制文件C++
- 24. C:读取二进制文件
- 25. C二进制文件读取
- 26. 读取二进制文件:c
- 27. C,读取二进制文件?
- 28. C:读取二进制文件
- 29. 使用Python编写双精度二进制文件
- 30. 将双精度值转换为二进制值
这种技术假定架构,格式,字节顺序,适当的对象大小都相同 - 如果数据来自同一台机器,这些都可以。 – wallyk 2010-08-10 19:35:08