andyup 发表于 2016-11-21 11:27:58

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

把    string“0xFF”转换变成int255
请高手指教一下

275891381 发表于 2016-11-21 13:54:00

本帖最后由 275891381 于 2016-11-21 13:56 编辑

自己写一个不就可以了,
String inString []= {"0xff","a0","AA"};         // 用来储存接收到的内容


void setup()
{
Serial.begin(9600);
}


void loop()
{
      for(int i=0;i<3;i++)
          Serial.println(ChangeNum(inString));
      delay(1000);
}
int ChangeNum(String str)   
{   
    charrevstr={0};//根据十六进制字符串的长度,这里注意数组不要越界
    int   num={0};   
    int   count=1,result=0,flag=0;;
    if(str=='0'&&(str=='X'||str=='x'))
       flag=2;
    for(int i=str.length()-1;i>=flag;i--)   
    {   
      revstr = str;
      if ((revstr>='0') && (revstr<='9'))   
            num=revstr-'0';
      else if ((revstr>='a') && (revstr<='f'))   
            num=revstr-'a'+10;   
      else if ((revstr>='A') && (revstr<='F'))   
            num=revstr-'A'+10;   
      else   
            num=0;   
      result=result+num*count;   
      count=count*16;   
    }   
    return result;   
}

andyup 发表于 2016-11-21 14:35:45

感谢回复。。。有个更快的方法。。交流一下。。如下
myint = strtol(mystr.c_str(), NULL, 16);

mystr.c_str()这个是转换char。。这个函数要用这个类型
页: [1]
查看完整版本: 请问 16进制字符串转换问题