编程语言

img jeffery223

字符串转化为16进制

发表于2008/10/2 19:19:00  949人阅读

 字符串转化为16进制数,比如输入字符串char *string="1a5e";经转化后就成为了一个16进制数:0x1a5e

 

int  a16toi( char *pNumber)
{
    int   len,pos,ret   =   0;    

   len   =   strlen(pNumber);   
   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;
}

阅读全文
0 0

相关文章推荐

img
取 消
img