字符串转化为16进制

 字符串转化为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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值