如 十六进制字符串: 0812333230383032313936323033303932303132
   转换为10进制c++ 怎么实现 如果有中文呢

解决方案 »

  1.   

    0x30 ~ 0x39 对应的就是 '0' ~ '9'
    所以猜测一下 0x08表示某种标识 前面的0x12表示后面的数据个数 后面就是"320802196203092012"
      

  2.   

    int ChangeNum(CString str,int length)   {           char  revstr[16]={0};  
             int   num[16]={0};   
            int   count=1;   
            int   result=0;   
            strcpy(revstr,str);   
            for   (int i=length-1;i>=0;i--)   
            {   
                   if ((revstr[i]>='0') && (revstr[i]<='9'))   
                       num[i]=revstr[i]-48;//字符0的ASCII值为48
                   else if ((revstr[i]>='a') && (revstr[i]<='f'))   
                            num[i]=revstr[i]-'a'+10;   
                   else if ((revstr[i]>='A') && (revstr[i]<='F'))   
                            num[i]=revstr[i]-'A'+10;   
                   else   
                            num[i]=0; 
                   result=result+num[i]*count;   
                   count=count*16;   
            }   
            return result;   
    }
    int main()
    {
            CString   str="0x11";//如:"0x11"
            int n=0;
            n=ChangeNum(str,str.GetLength());
            printf("%d\n",n);
            return 0;        
    }
      

  3.   

    字符串数据和身份证编号相关
    62年出生江苏 淮安 女性。额....不说了楼主给出的数据是16进制的ASCII码字符串。
    这种字串没可能出现中文,第一个字节未知,第二个字节表示后边身份证号码的字节数,后边身份证号码。