怎么把16进制数转换成10进制数。
本帖最后由 乐乐2365 于 2015-8-7 12:26 编辑意思就是把A5 5A 04 83 10 00 00 01读出来。怎么把后边的0001 转换成10进制数作比较。哪位大侠帮帮忙
簡單轉換的 function 我不知有沒有, 但自己做也不會太難.
單獨一個位轉成 16 進: (c >= 'a'? c - 'a' : (c >= 'A' ? c - 'A' : c - '0'));
如果只有兩個位, 就是 16 x (1) + (2).... 如此類推, 都是簡單數學吧.
大侠我的意思是把00 01转换成十进制数前边的不用转换。 求个程序。谢谢
乐乐2365 发表于 2015-8-7 14:55 static/image/common/back.gif
大侠我的意思是把00 01转换成十进制数前边的不用转换。
有了轉換的方法, 你要轉換那個都不是問題了.你沒說明數據怎樣儲存, 用什麼準則去決定轉換那一個, 如何寫程序?
如果就照你說的, 只是要把 00 01 轉成 10 進制的話, 既然已經知道是 00 01, 還用轉什麼, 直接填上去就是.
乐乐2365 发表于 2015-8-7 14:55 static/image/common/back.gif
大侠我的意思是把00 01转换成十进制数前边的不用转换。
00 01 HEX转换成DEC 值不变 :lol 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!”字符串
}} 就是比较接受到的是不是A5 5A 04 83 10 00 00 哪位大侠帮帮忙
乐乐2365 发表于 2015-8-7 22:08 static/image/common/back.gif
就是比较接受到的是不是A5 5A 04 83 10 00 00 哪位大侠帮帮忙
串口每次读取的只能是1个字节,你要逐次比较才对
HEXHEX[] = {0xA5,0x5A, 0x04, 0x83, 0x10, 0x00, 0x00};
if (x < 7 && (HEXHEX == incomingByte))
hexhex[]合计是7位,x是循环读取计数,每循环读取一次,x+1,串口读取一次就和hexhex预置的数据进行比较。 乐乐2365 发表于 2015-8-7 22:07 static/image/common/back.gif
int incomingByte =0;
int ledpin=13;//定义数字接口13
if(incomingByte=='R')//判断接收到的指令或字符是否是“R”。
试试看这样 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);
}
页:
[1]