【问题标题】:Wrong payload conversion Arduino错误的有效载荷转换Arduino
【发布时间】:2019-10-23 11:34:36
【问题描述】:

您好,我是 arduino 的新手,也许这是一个愚蠢的问题,但我正在尝试将 long 数字转换为 byte

我的代码是:

float f_longitud = 179.1234567;
byte payload[4];

long longitud= f_longitud * 10000000;
SerialUSB.println(longitud);

payload[0] = (byte) ((longitud & 0xFF000000) >> 24 );
payload[1] = (byte) ((longitud & 0x00FF0000) >> 16 );
payload[2] = (byte) ((longitud & 0x0000FF00) >> 8 );
payload[3] = (byte) ((longitud & 0X000000FF));
SerialUSB.println(payload[0]);

问题是第一个println理论上必须显示1791234567,因为我只是乘以179.1234567 x 10000000,但它显示1791234560。为什么会出现这个 0? 7在哪里?

第二个问题是payload[0]应该是6A十六进制,但是我的println显示106。为什么转换不正确?这个问题是不是因为之前的错误?

下面我展示了我正在做的事情的计划。来自this link

非常感谢!

【问题讨论】:

    标签: arduino payload


    【解决方案1】:

    问题是第一个 println 理论上必须显示 1791234567,因为我只是乘以 179.1234567 x 10000000 但它 显示1791234560。为什么会出现这个0? 7在哪里?

    这可能是由于float 的精度限制。请改用double

    第二个问题是payload[0]应该是6A hex,但是我的println 显示 106。

    您可以为println() 提供格式,如下所示:

    SerialUSB.println(payload[0], HEX);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      • 2021-10-12
      • 2019-07-16
      • 2011-10-01
      • 2016-03-04
      相关资源
      最近更新 更多