题目描述
现在有一串由0 1组成的序列,你的任务是把这串0和1转化为32进制。规定
从10开始转化其所对应的大写字母。比如10 -> A 11 -> B 12 -> C ………
31 -> V
输入描述:
有多组数据, 由一串0和1组成的序列,其长度0<n <=1000, 处理至文件结束
输出描述:
对于每一组数据,输出一行, 输出其对应的32位进制的结果。
示例1
输入
111111
输出
1V
水题一道,把字符串前置补0,补成长度是5的倍数,从前往后,每5位2进制是一个32进制的数,就这。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1e6+100;
const int mod=1e9+7;
char a[maxn];
int k=0;
int main()
{
string str;
while(cin>>str)
{
k=0;
int s=str.size()%5;
if(s)
{
for(int i=1;i<=5-s;i++)
str='0'+str;
}
//cout<<str<<endl;
int now=0,res=0;
for(int i=0;i<str.size();i++)
{
res=res*2+str[i]-'0';
now++;
if(now==5)
{
if(res<10)a[++k]=res+'0';
else a[++k]=(char)(res+'A'-10);
res=0;
now=0;
}
}
// if(res<10)a[++k]=res+'0';
//else a[++k]=(char)(res+'A'-10);
for(int i=1;i<=k;i++)
cout<<a[i];
cout<<endl;
}
system("pause");
return 0;
}