极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1058|回复: 6

紧急求助arduino16进制数转为10进制数的方法

[复制链接]
发表于 2018-1-10 14:23:26 | 显示全部楼层 |阅读模式
今日得一武汉中显的触摸屏,触摸屏串口返回数据格式是十六进制:A5 5A 08 83 00 24 02 00 00 EA 60

其中最后的EA 06,是要用的变量数据,需要转成十进制来使用,其中两个连起来 EA60=60000。

现在可以通过string的分别读取出了这个EA和06单个的数,但不会把它连起来成EA60,求指教。另连起来又怎么能把他们变成十进制的数呢?


自己也想用笨办法:E*16∧3 + A*16∧2 + 0+6来计算这个数,可是还是不会取出E,A,0,6这些单个数值的方法,求大家指教。
回复

使用道具 举报

发表于 2018-1-10 20:15:12 | 显示全部楼层
你的方法没错,但先要把它转成十进制 ,用数组装好 ,然后 vol[0]*1 + vol[1]*10 + vol[2]*100 + vol[3]*1000
回复 支持 反对

使用道具 举报

发表于 2018-1-10 20:20:42 | 显示全部楼层
本帖最后由 Stormer 于 2018-1-10 20:26 编辑

strtol函数会将参数nptr字符串根据参数base来转换成长整型数,参数base范围从2至36(进制)。

char data[]="EA60";

long iOut;

iOut = strtol(data, NULL, 16);

Serial.println(iOut);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-10 20:27:33 | 显示全部楼层
最帅的老饼 发表于 2018-1-10 20:15
你的方法没错,但先要把它转成十进制 ,用数组装好 ,然后 vol[0]*1 + vol[1]*10 + vol[2]*100 + vol[3]*10 ...


再请教怎么能转成10进制呢?程序怎么写?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-10 20:46:25 | 显示全部楼层
本帖最后由 duanyz 于 2018-1-10 20:50 编辑
Stormer 发表于 2018-1-10 20:20
strtol函数会将参数nptr字符串根据参数base来转换成长整型数,参数base范围从2至36(进制)。

char data ...


兄弟,你这个函数非常好,不过我这里还是存在着问题不会处理。。

我是用 “ comdata += char(my1Serial.read());” 这个命令读取串口数据,然后打印才知道的它的comdata[10]和 comdata[11]值是分别是EA和 60 。


所以,我就是没有EA60这个数。如果能将comdata[10]和 comdata[11]处理后变成EA60,再用你这个函数就完美了。

我现在如果用comdata[10]代替你的函数中的     iOut = strtol(data, NULL, 16);

也就是这样 :iOut = strtol(comdata[10], NULL, 16);

可是这函数就不能运行,ide提示sting数不能用在这里。

怎么能将comdata[10]赋值给其他数呢?

求指点。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-10 21:14:26 | 显示全部楼层
Stormer 发表于 2018-1-10 20:20
strtol函数会将参数nptr字符串根据参数base来转换成长整型数,参数base范围从2至36(进制)。

char data ...

2018-01-10.jpg
回复 支持 反对

使用道具 举报

发表于 2018-1-10 21:17:06 | 显示全部楼层
本帖最后由 最帅的老饼 于 2018-1-10 21:21 编辑

char 的 E  是 101  , 你要把  101 - 97 才等于 十进制的 14  我知道有这会事,但新手小白没有编过这类型程,自己百度一下 char 转十进制,编个程试验一下吧 。
arduino 是基于 C语言的,C 对数据类型要求很高。 要想深入,必须了解。
回复 支持 反对

使用道具 举报

高级模式  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2018-9-24 07:58 , Processed in 0.043289 second(s), 7 queries , File On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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