极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17293|回复: 2

请问 16进制字符串转换问题

[复制链接]
发表于 2016-11-21 11:27:58 | 显示全部楼层 |阅读模式
把    string  “0xFF”  转换变成  int  255
请高手指教一下
回复

使用道具 举报

发表于 2016-11-21 13:54:00 | 显示全部楼层
本帖最后由 275891381 于 2016-11-21 13:56 编辑

自己写一个不就可以了,

  1. String inString []= {"0xff","a0","AA"};         // 用来储存接收到的内容


  2. void setup()
  3. {
  4.   Serial.begin(9600);
  5. }
  6.   
  7.   
  8. void loop()
  9. {
  10.       for(int i=0;i<3;i++)
  11.           Serial.println(ChangeNum(inString[i]));
  12.       delay(1000);
  13. }
  14. int ChangeNum(String str)     
  15. {     
  16.     char  revstr[16]={0};  //根据十六进制字符串的长度,这里注意数组不要越界  
  17.     int   num[16]={0};     
  18.     int   count=1,result=0,flag=0;;  
  19.     if(str[0]=='0'&&(str[1]=='X'||str[1]=='x'))
  20.        flag=2;
  21.     for(int i=str.length()-1;i>=flag;i--)     
  22.     {   
  23.         revstr[i] = str[i];  
  24.         if ((revstr[i]>='0') && (revstr[i]<='9'))     
  25.             num[i]=revstr[i]-'0';
  26.         else if ((revstr[i]>='a') && (revstr[i]<='f'))     
  27.             num[i]=revstr[i]-'a'+10;     
  28.         else if ((revstr[i]>='A') && (revstr[i]<='F'))     
  29.             num[i]=revstr[i]-'A'+10;     
  30.         else     
  31.             num[i]=0;   
  32.         result=result+num[i]*count;     
  33.         count=count*16;   
  34.     }     
  35.     return result;     
  36. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-21 14:35:45 | 显示全部楼层
感谢回复。。。有个更快的方法。。交流一下。。如下
myint = strtol(mystr.c_str(), NULL, 16);

mystr.c_str()这个是转换char。。这个函数要用这个类型
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-11 04:01 , Processed in 0.042686 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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