注意点:数组长度大于等于六位,应当用全局变量声明,不能在main函数里面声明
#include<stdio.h>
#include <string.h>
int changeToNum(char s){
if(s>='0'&&s<='9'){
return s-'0';
}else{
return s-'A' + 10;
}
}
int s2[400001];
int s8[400001];
char s16[100001];
int main()
{
int i,j,k,n,len;
int count,num;
scanf("%d",&n);
while(n--){
scanf("%s",s16);
len = strlen(s16);
k = 0 ;
for(i=len-1;i>=0;i--){
num = changeToNum(s16[i]);
count = 4;
while(count--){
s2[k++] = num % 2;
num/=2;
}
}
count = 1;
j = 0;
num = 0;
for(i=0;i<k;i++){
if(count == 4 || i == k-1){
num = count * s2[i] + num;
s8[j++] = num;
num = 0;
count = 1;
}else{
num = count * s2[i] + num;
count *= 2;
}
}
if(s8[j-1]!=0||j == 1)
printf("%d",s8[j-1]);
for(i=j-2;i>=0;i--){
printf("%d",s8[i]);
}
printf("\n");
}
return 0;
}