我将esp32和arduino ide连接到canbus。我从rx_frame.data.u8 []获取数据流,它具有8个字节,例如。 [FF,FF,FF,61、3F,FF,FF,FF];
我需要使用rx_frame.data.u8 [3]和rx_frame.data.u8 [4]例如61和3F,将它们设置为intel字节顺序(反向字节顺序?),例如。 3F61并转换为DEC。它应该返回16255。
问题:我无法将rx_frame.data.u8 []转换为Intel字节顺序,然后转换为DEC。我已经尝试了几件事,我能够使用String engspd1 = String(rx_frame.data.u8 [4],HEX)+ String(rx_frame.data.u8 [3],HEX)来设置intel字节顺序。但是现在我无法将String engspd1转换为DEC。 另外,我将解析大量数据,所以我不确定哪种方法最适合解析这种数据流。
P.S。很抱歉,如果我通过不同的命名方式在问题中犯了一些错误。我只是从C,C ++和arduino ide开始。
dblclick
答案 0 :(得分:0)
在您的代码中,您正在访问字节5和4,而不是3和4。这是您的问题吗? C数组的索引为零,因此3和4是您想要的字节的位置。
答案 1 :(得分:0)
您只需添加字节即可获得所需的结果。 (您的数组不是十六进制的,因为这只是控制器不了解的一种表示形式。
int engspd2 = rx_frame.data.u8[4] << 8 + rx_frame.data.u8[3];