描述
输入一个2进制的数,要求输出该2进制数的16进制表示。
在16进制的表示中,A-F表示10-15
输入
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个以0和1组成的字符串,
字符串长度至少是1,至多是10000
输出
n行,每行输出对应一个输入。
样例输入
2
100000
111
样例输出
20
7
源代码
#include<iostream>
#include<string>
using namespace std;
const int maxn = 1e2+2;
int chr(char c){
return c-'0';
}
char hy(int sum){
if(sum<10) return char(sum+'0');
else return char('A'+sum-10);
}
int main(){
std::ios::sync_with_stdio(false);cin.tie(0);
int n;
cin>>n;
string s1;
while(n--){
cin>>s1;
int n=s1.length(),i=n%4,sum=0;
if(n==1){
cout<<s1<<'\n';
continue;
}
for(int j=0;j<i;j++)sum=sum*2+chr(s1[j]);
if(sum)cout<<hy(sum);
for(;i<n;i+=4){
sum=chr(s1[i])*8+chr(s1[i+1])*4+chr(s1[i+2])*2+chr(s1[i+3]);
cout<<hy(sum);
}
cout<<"\n";
}
return 0;
}