【发布时间】:2015-07-19 01:02:59
【问题描述】:
我从套接字读取了一些十六进制数据。这个协议的规范告诉我,下面的 8 个字节代表一个双值。
所以我有例如 8 个字节,例如:
0x3F 0xD1 0x9B 0x94 0xC0 0x00 0x00 0x00
(这个值保存在一个char数组中所以Array[0] = 0x3F, `Array[1] = 0xD1è...)
表示的double值是:0.275120913982
如何将这 8 个字节转换为这个双精度值?
我尝试了很多不同的方法,但都没有真正奏效。所以我不知道如何将它操纵成双倍。
【问题讨论】:
-
您是否检查过是否需要执行大端到小端的转换?
-
“我尝试了很多不同的东西,但都没有真正的效果。所以我不知道如何将它操纵成双倍。” - 这是预期的这样您就可以向我们展示您尝试过的内容,并实际解释发生了什么以及它是如何不起作用的,以及您不理解的原因。无论如何,这很容易:
double d; memcpy(&d, &a[0], sizeof d);
标签: c++ arrays double converter