极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 乐乐2365

怎么把16进制数转换成10进制数。

[复制链接]
发表于 2015-8-7 12:21:49 | 显示全部楼层 |阅读模式
本帖最后由 乐乐2365 于 2015-8-7 12:26 编辑

意思就是把A5 5A 04 83 10 00 00 01读出来。怎么把后边的00  01 转换成10进制数作比较。哪位大侠帮帮忙
回复

使用道具 举报

发表于 2015-8-7 13:11:10 | 显示全部楼层
簡單轉換的 function 我不知有沒有, 但自己做也不會太難.

單獨一個位轉成 16 進:   (c >= 'a'? c - 'a' : (c >= 'A' ? c - 'A' : c - '0'));
如果只有兩個位, 就是 16 x (1) + (2).... 如此類推, 都是簡單數學吧.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-7 14:55:43 | 显示全部楼层
大侠我的意思是把00 01转换成十进制数前边的不用转换。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-7 14:56:27 | 显示全部楼层
求个程序。谢谢
回复 支持 反对

使用道具 举报

发表于 2015-8-7 17:13:50 | 显示全部楼层
乐乐2365 发表于 2015-8-7 14:55
大侠我的意思是把00 01转换成十进制数前边的不用转换。

有了轉換的方法, 你要轉換那個都不是問題了.  你沒說明數據怎樣儲存, 用什麼準則去決定轉換那一個, 如何寫程序?
如果就照你說的, 只是要把 00 01 轉成 10 進制的話, 既然已經知道是 00 01, 還用轉什麼, 直接填上去就是.
回复 支持 反对

使用道具 举报

发表于 2015-8-7 17:49:59 | 显示全部楼层
乐乐2365 发表于 2015-8-7 14:55
大侠我的意思是把00 01转换成十进制数前边的不用转换。

00 01   HEX转换成DEC 值不变
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-7 22:07:13 | 显示全部楼层
int incomingByte =  0;  
int ledpin=13;//定义数字接口13  
  
void setup()  
{  
  Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。  
  pinMode(ledpin,OUTPUT);//设置数字13 口为输出接口,Arduino 上我们用到的I/O 口都要进行类似这样的定义。  
}  
  
void loop()  
{  
  incomingByte=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val  
  if(incomingByte=='A5 5A 04 83 10 00 00')//判断接收到的指令或字符是否是“R”。  
  {//如果接收到的是“R”字符  
    digitalWrite(ledpin,HIGH);//点亮数字13 口LED。  
    delay(500);  
    digitalWrite(ledpin,LOW);//熄灭数字13 口LED  
    delay(500);  
    Serial.println("incomingByte");//显示“Hello World!”字符串  
  }}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-7 22:08:30 | 显示全部楼层
就是比较接受到的是不是A5 5A 04 83 10 00 00      哪位大侠帮帮忙
回复 支持 反对

使用道具 举报

发表于 2015-8-8 08:50:07 | 显示全部楼层
乐乐2365 发表于 2015-8-7 22:08
就是比较接受到的是不是A5 5A 04 83 10 00 00      哪位大侠帮帮忙

串口每次读取的只能是1个字节,你要逐次比较才对
HEXHEX[] = {0xA5,0x5A, 0x04, 0x83, 0x10, 0x00, 0x00};

if (x < 7 && (HEXHEX[x] == incomingByte))

hexhex[]合计是7位,x是循环读取计数,每循环读取一次,x+1,串口读取一次就和hexhex预置的数据进行比较。
回复 支持 反对

使用道具 举报

发表于 2015-8-8 09:36:36 | 显示全部楼层
乐乐2365 发表于 2015-8-7 22:07
int incomingByte =  0;  
int ledpin=13;//定义数字接口13  
  

if(incomingByte=='R')//判断接收到的指令或字符是否是“R”。  

试试看这样  
回复 支持 反对

使用道具 举报

发表于 2017-4-26 22:10:48 | 显示全部楼层
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-20 13:08 , Processed in 0.044460 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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