Arduino vs. c ++:将8个字节转换为double

时间:2018-02-18 14:58:01

标签: c++ arduino hex double

我想将一些十六进制数据(8个字节)转换为双精度数。

使用C ++和代码

#include <iostream>

using namespace std;

int main()
{
      union { char b[8]; double d; };
    b[7] = 0x3F;
    b[6] = 0xC9;
    b[5] = 0xB3;
    b[4] = 0xD5;
    b[3] = 0x09;
    b[2] = 0xFB;
    b[1] = 0x93;
    b[0] = 0x89;
    cout<<d;

    return 0;
}

我收到预期值d = 0.200801。

使用略微修改的代码复制我的Arduino Mega(仅用于输出)

void setup() {
  Serial.begin(9600);
  union { char b[8]; double d; };
    b[7] = 0x3F;
    b[6] = 0xC9;
    b[5] = 0xB3;
    b[4] = 0xD5;
    b[3] = 0x09;
    b[2] = 0xFB;
    b[1] = 0x93;
    b[0] = 0x89;

    Serial.println(d, 9);
}

void loop() {
}

它不会返回预期值,但是:d = 0.000000000。

如何让我的Arduino像C ++编译器一样正确计算?

0 个答案:

没有答案