If  Text1.Text  <  >    ""  Then
  
      Text2.Text  =  ""
  
      a  =  Text1.Text
  
      l  =  Len(Text1.Text)
  
      If  a  <  >    0  Then
  
      For  i  =  1  To  l
  
          c  =  Mid(Text1.Text,  i,  1)
  
          If  c  >  =  "0"  And  c  <  =  "9"  Then
  
                  Do  While  a
  
                      r  =  a  Mod  16
  
                      a  =  a  \  16
  
                      Select  Case  r
  
                            Case  0:  r  =  "0"
  
                            Case  1:  r  =  "1"
  
                            Case  2:  r  =  "2"
  
                            Case  3:  r  =  "3"
  
                            Case  4:  r  =  "4"
  
                            Case  5:  r  =  "5"
  
                            Case  6:  r  =  "6"
  
                            Case  7:  r  =  "7"
  
                            Case  8:  r  =  "8"
  
                            Case  9:  r  =  "9"
  
                            Case  10:  r  =  "a"
  
                            Case  11:  r  =  "b"
  
                            Case  12:  r  =  "c"
  
                            Case  13:  r  =  "d"
  
                            Case  14:  r  =  "e"
  
                            Case  15:  r  =  "f"
  
            End  Select
  
                      Text2.Text  =  r  +  Text2.Text
  
                  Loop
  
              
  
        Else:  Text2.Text  =  "输入错误"
  
                    Exit  Sub
  
        End  If
  
      Next
  
      Else:  Text2.Text  =  a
  
      End  If
  
Else:  Text2.Text  =  "0"
  
End  If
  

解决方案 »

  1.   

    还可以简化,不过这样也能用
    int a16toi(char * pNumber)
    {
    int ret = 0;
    int len = strlen(pNumber);
    int pos = len;
        while(pos--) 
    switch(pNumber[pos])
    {
       case '0': break;
       case '1': ret += (len-pos-1) ? 1 * 1<<(4* (len-pos-1)) : 1;break;
       case '2': ret += (len-pos-1) ? 2 * 1<<(4* (len-pos-1)) : 2;break;
       case '3': ret += (len-pos-1) ? 3 * 1<<(4* (len-pos-1)) : 3;break;
       case '4': ret += (len-pos-1) ? 4 * 1<<(4* (len-pos-1)) : 4;break;
       case '5': ret += (len-pos-1) ? 5 * 1<<(4* (len-pos-1)) : 5;break;
       case '6': ret += (len-pos-1) ? 6 * 1<<(4* (len-pos-1)) : 6;break;
       case '7': ret += (len-pos-1) ? 7 * 1<<(4* (len-pos-1)) : 7;break;
       case '8': ret += (len-pos-1) ? 8 * 1<<(4* (len-pos-1)) : 8;break;
       case '9': ret += (len-pos-1) ? 9 * 1<<(4* (len-pos-1)) : 9;break;
       case 'a': ret += (len-pos-1) ? 10 * 1<<(4* (len-pos-1)) : 10;break;
       case 'b': ret += (len-pos-1) ? 11 * 1<<(4* (len-pos-1)) : 11;break;
       case 'c': ret += (len-pos-1) ? 12 * 1<<(4* (len-pos-1)) : 12;break;
       case 'd': ret += (len-pos-1) ? 13 * 1<<(4* (len-pos-1)) : 13;break;
       case 'e': ret += (len-pos-1) ? 14 * 1<<(4* (len-pos-1)) : 14;break;
       case 'f': ret += (len-pos-1) ? 15 * 1<<(4* (len-pos-1)) : 15;break;
       case 'A': ret += (len-pos-1) ? 10 * 1<<(4* (len-pos-1)) : 10;break;
       case 'B': ret += (len-pos-1) ? 11 * 1<<(4* (len-pos-1)) : 11;break;
       case 'C': ret += (len-pos-1) ? 12 * 1<<(4* (len-pos-1)) : 12;break;
       case 'D': ret += (len-pos-1) ? 13 * 1<<(4* (len-pos-1)) : 13;break;
       case 'E': ret += (len-pos-1) ? 14 * 1<<(4* (len-pos-1)) : 14;break;
       case 'F': ret += (len-pos-1) ? 15 * 1<<(4* (len-pos-1)) : 15;break;
       default:
       break;
    }
    return ret;
    }
      

  2.   

    16 to 10 更简单比如一个16进制数4321,转换成10进制就是各位上的数字乘以16为底,他所在的位数为冥的乘积之和,即4X16(3)+3X16(2)+2X16(1)+1表述不清,见谅