紧急求助arduino16进制数转为10进制数的方法
今日得一武汉中显的触摸屏,触摸屏串口返回数据格式是十六进制: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这些单个数值的方法,求大家指教。 你的方法没错,但先要把它转成十进制 ,用数组装好 ,然后 vol*1 + vol*10 + vol*100 + vol*1000 本帖最后由 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:15
你的方法没错,但先要把它转成十进制 ,用数组装好 ,然后 vol*1 + vol*10 + vol*100 + vol*10 ...
再请教怎么能转成10进制呢?程序怎么写? 本帖最后由 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和 comdata值是分别是EA和 60 。
所以,我就是没有EA60这个数。如果能将comdata和 comdata处理后变成EA60,再用你这个函数就完美了。
我现在如果用comdata代替你的函数中的 iOut = strtol(data, NULL, 16);
也就是这样 :iOut = strtol(comdata, NULL, 16);
可是这函数就不能运行,ide提示sting数不能用在这里。
怎么能将comdata赋值给其他数呢?
求指点。 Stormer 发表于 2018-1-10 20:20
strtol函数会将参数nptr字符串根据参数base来转换成长整型数,参数base范围从2至36(进制)。
char data ...
本帖最后由 最帅的老饼 于 2018-1-10 21:21 编辑
char 的 E是 101, 你要把101 - 97 才等于 十进制的 14我知道有这会事,但新手小白没有编过这类型程,自己百度一下 char 转十进制,编个程试验一下吧 。
arduino 是基于 C语言的,C 对数据类型要求很高。 要想深入,必须了解。
页:
[1]