任何人都可以展示如何正确地将二进制表示的数据转换为C中的double值。例如,我有8个unsigned char值要转换为double值(让我们将它命名为buffer)。所以buffer [0]的0位是LSB,缓冲区[7]的7位是MSB。非常感谢!
答案 0 :(得分:4)
IF 以下全部为真:
sizeof(double) == 8
你可以简单地将8个字节读入数组,并进行强制转换(假设'fd'是打开的文件描述符):
char bytes[8];
fread(&bytes, 8, 1, fd);
double d = *((double*)bytes);
但更一般地说,我建议不要保存那样的二进制数据。是的,它曾经是常见的,而且很多人仍然这样做,但是使用现代硬件它实际上是不必要的并导致这样的情况,如果您的平台与其编写的平台完全匹配,您只能轻松地反序列化它到磁盘。选择一种便携式格式 - 基于人类可读的UTF-8,如果可以 - 并使用它。
答案 1 :(得分:3)
投下它,我想
char buf[8];
double x;
...
x = *((double*) buf);