2798:2进制转化为16进制
查看提交统计提示提问总时间限制:
1000ms
内存限制:
65536kB
描述
输入一个2进制的数,要求输出该2进制数的16进制表示。
在16进制的表示中,A-F表示10-15
输入
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个以0和1组成的字符串,字符串长度至少是1,至多是10000
输出
n行,每行输出对应一个输入。
样例输入
2100000111
样例输出
207
#include <string>
#include <iostream>
using namespace std;
int main()
{
int n;cin>>n;
while (n--)
{
char d2x[17] = "0123456789ABCDEF";
int flag[4] = {1,2,4,8};
string s;cin>>s;
int len = s.length();
int mod = len%4;
int num = 0;
for (int i=mod;i>0;i--)
{
if (s[mod-i]=='1')
{
num += flag[i-1];
}
}
if (mod)
cout<<d2x[num];
for (int i=mod;i<len;i+=4)
{
num = 0;
for (int j=0;j<4;j++)
{
if (s[i+j]=='1')
{
num += flag[3-j];
}
}
cout<<d2x[num];
}
cout<<endl;
}
return 0;
}
多谢大神!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。