二进制 转 十六进制 【C语言】

貌似简单,实则不易,这是鄙人一个粗浅实现,应有更好之法!

 1 bool binaryToHex(const char *inStr, char *outStr)
 2 {
 3     //asset。。。。。
 4   static char hex[] = "0123456789ABCDEF";
 5   int len = strlen(inStr)/4;
 6   int i = strlen(inStr)%4;
 7   char current = 0;
 8   if(i)
 9    {
10        //如果二进制长度不是4的整数倍
11     while(i--)
12     {
13       current = (current << 1)|(*inStr - '0');
14       inStr++;
15        }
16        *outStr = hex[current];
17        ++outStr;
18     }
19     while(len--)  //后续的长度为4的整数倍
20     {
21         current = 0;
22         for(i = 0; i < 4; ++i) 
23         {
24             current = (current << 1)|(*inStr - '0');
25             inStr++;
26         }
27         *outStr = hex[current];
28         ++outStr;
29     }
30     *outStr = 0; //加结束符
31     return true;
32 }                 

转载于:https://www.cnblogs.com/renzhezhiye/archive/2013/01/17/2865418.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值