极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13461|回复: 2

arduino读出的16进制数据如何转化成10进制

[复制链接]
发表于 2016-10-9 22:30:54 | 显示全部楼层 |阅读模式
我用arduino连接传感器得到的数据是FF CC 05 A5 A0 00 00 FF CC 05 80 A0 01 DA FF CC 05 80 A0 01 DA FF CC 05 80 A0 01 DA FF CC 05 7F A0 01 D9 FF CC 05 7F A0 01 D9 FF CC 05 7F A0 01 D9 FF CC 05 7F A0 01 D9 FF CC 05 80 A0 01 DA FF CC 05 7F A0 01 D9 FF CC 05 7F A0 01 D9 FF CC 05 7E A0 01 D8 FF CC 05 7F A0 01 D9 FF CC 05 7F A0 01 D9 FF CC 05 7F A0 01 D9 。。。。
传感器发送回来的数据格式是七个字节,但是有用的数据就是后面两位,倒数第二位在高字节,倒数第一位在低字节,组成的十六进制数据转化为十进制就是所要求的的数据,但是我现在怎么把这两个字节给提取出来并且转化成十进制啊,跪求大神讲解。
回复

使用道具 举报

发表于 2016-10-10 09:28:18 | 显示全部楼层
我猜你是串口得到 7个长度的数据,

先建个数组存取接收的数据,你可以在论坛里找相关的教程。。。

每次接收完7个数据后,只取倒数2个数组里的数据进行转换就可以。。

FF CC 05 80 A0 01 DA

int high = 01;
int low = DA;
int x = (high << 8) | low;

x 为所求
回复 支持 反对

使用道具 举报

发表于 2017-4-26 22:10:04 | 显示全部楼层
Paderboy 发表于 2016-10-10 09:28
我猜你是串口得到 7个长度的数据,

先建个数组存取接收的数据,你可以在论坛里找相关的教程。。。

char AA[]="af";
String BB ="EE";
void setup() {
  Serial.begin(9600);
}
void loop() {
int i= strtol(AA,NULL,16);
  Serial.print(i);
Serial.print(",");
i= strtol(BB.c_str(),NULL,16);
  Serial.println(i);
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 14:16 , Processed in 0.038971 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表