回复 9楼 Leo_L
夸大了点,如果不考虑大小写的话,可用22行解决,考虑字母大小写用了26行(包括中括号),代码如下,请测试:程序代码:
#include<stdio.h> void main() { char a[100001],b,d[4]={1,2,4,8}; int i,j,k,l,n; for(scanf("%d",&n);n;n--) { scanf("%s",a); for(i=0,l=0;a[i];i++,l+=4) { if(a[i]>'F')a[i]-=32; //调整大小写 a[i]=a[i]>'9'?a[i]-'A'+10:a[i]-'0'; //转换为对应十进制数 } for(i=0,j=l%3>0?3-l%3:0,b=k=0;i<l;i++) { b=b*2+((a[i/4]&d[3-i%4])>0); if(++j==3) { if(b&&!k)k=1; //消前导0 if(k)printf("%d",b); b=j=0; } } printf("\n"); } }
[此贴子已经被作者于2017-2-28 08:22编辑过]