arduino - 错误的有效载荷转换Arduino
问题描述
您好,我是 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
. 为什么转换不正确?这个问题是因为之前的错误而出现的吗?
下面我展示了我正在做的事情。它来自这个链接。
非常感谢!
解决方案
问题是第一个 println 理论上必须显示 1791234567,因为我只是乘以 179.1234567 x 10000000 但它显示 1791234560。为什么会出现这个 0?7号在哪里?
这可能是由于float
. 试试double
吧。
第二个问题是 payload[0] 应该是 6A hex,但是我的 println 显示的是 106。
您可以为println()提供格式,如下所示:
SerialUSB.println(payload[0], HEX);
推荐阅读
- react-native - undefined 不是对象(评估'_this2.setProject.bind')onPress
- ruby-on-rails - 旧组件在后退按钮上保留状态
- asp.net - 如何通过ajax将表单数据从asp.net html页面发送到c#代码
- typescript - 尝试使用导入的字符串常量来约束打字稿类型文字时获取 TS2503
- python - 使用 Heroku 的 Flask 中的模块导入错误和 NameError
- c# - Debug.log() 和 print() 函数有什么区别?
- ios - 向上滚动时如何撤消视图 Y 更改?
- sql - 有没有其他方法可以在 sql 中实现以下逻辑?
- mongodb - 如何获取最顶层过滤的文档并对嵌入结果进行排序
- node.js - 问题路由快速路线