这是一段二进制数转到16进制数的代码,注释部分不明白,求大神解释一下。
int main(){
int n;
cin>>n;
int i,j,k;
char sixteen[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char num[10000];
for(i=0;i<n;i++){
cin>>num;
j=0;
while(num[j]!='\0')
j++;
int a,b;
int s=0;
a=j/4;
b=j%4;
if(b!=0){
for(k=0;k<b;k++){
s=s+pow(2.0,k)*(num[b-k-1]-48);//这里减48是什么意思?
}
cout<<sixteen[s];
}
for(k=0;k<a;k++){
s=0;
for(int h=0;h<4;h++){
s=s+pow(2.0,h)*(num[b+k*4+4-h-1]-48);//同上,减48是什么作用?
}
cout<<sixteen[s];
}
cout<<endl;
}
return 0;
}
int main(){
int n;
cin>>n;
int i,j,k;
char sixteen[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char num[10000];
for(i=0;i<n;i++){
cin>>num;
j=0;
while(num[j]!='\0')
j++;
int a,b;
int s=0;
a=j/4;
b=j%4;
if(b!=0){
for(k=0;k<b;k++){
s=s+pow(2.0,k)*(num[b-k-1]-48);//这里减48是什么意思?
}
cout<<sixteen[s];
}
for(k=0;k<a;k++){
s=0;
for(int h=0;h<4;h++){
s=s+pow(2.0,h)*(num[b+k*4+4-h-1]-48);//同上,减48是什么作用?
}
cout<<sixteen[s];
}
cout<<endl;
}
return 0;
}