回复 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编辑过]








