描述
读入1行由0和1字符组成的二进制字符串,将其转换成十六进制数。
输入描述
一个0/1字符串,长度小于100000。
输出描述
输出1行转换后的十六进制数。
用例输入 1
11010100101
用例输出 1
6A5
提示:二进制转十六进制,从右向左,每四位转换成一个十六进制数。
c++:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
cin>>a;
string k="";
string d="";
for (int i=a.size()-1;i>=0;i--)
{
k+=a[i];
if (k.size()==4)
{
reverse(k.begin(),k.end());
long long n=0;
long long l=0;
for (long long j=k.size()-1;j>=0;j--)
{
n+=(k[j]-'0')*pow(2,l);
l++;
}
string h="";
string s="0123456789ABCDEFGHI";
while (n)
{
h=s[n%16]+h;
n=n/16;
}
d+=h;
k="";
}
}
long long n=0;
long long j=0;
for (long long i=k.size()-1;i>=0;i--)
{
n+=(a[i]-'0')*pow(2,j);
j++;
}
string h="";
string s="0123456789ABCDEFGHI";
while (n)
{
h=s[n%16]+h;
n=n/16;
}
cout<<h;
reverse(d.begin(),d.end());
cout<<d;
}