【发布时间】: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。
非常感谢!
【问题讨论】: