【简单】进制转换II

描述

给定一个二进制表示的非负整数,将其转换为十六进制数。

输入

输入数据有多组,第一行为数据的组数T,接下来有T组数据。
每组数据占一行,每行为一个二进制整数(不含多余的前导0),最多1000位。

输出

输出对应的十六进制数,字母用大写表示。

样例输入

2
1111
10100100

样例输出

F
A4

分析:
前位补0,注意细节。4位一计算。
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;
cin>>T;
while(T–)
{
string s;
cin>>s;
int l=s.length();
string S;
S=s;
if (l%4!=0)
{
int d=l%4;
for (int i=0;i<4-d;i++)
S=‘0’+S;
}
//cout<<S<<endl;
l=S.length()+1;
int t=1;
int d=8;
int sum=0;
for (int i=0;i<l+1;i++)
{
if (t>4)
{
t=1;d=8;
if (sum>=10)
cout<<char(‘A’+sum-10);
else
cout<<sum;
sum=0;
}
if (S[i]==‘1’)
{sum+=d;}
d/=2;
t++;
//cout<<sum<<’ ';
}
cout<<endl;
}
return 0;
}

发布了122 篇原创文章 · 获赞 0 · 访问量 4648

猜你喜欢

转载自blog.csdn.net/Skynamer/article/details/104178246