输入
11001001111011111000001000010011
输出
C9EF821
#include<bits/stdc++.h>
using namespace std;
//num()函数:将每四位二进制转换为1为的16进制,然后cout
char num(string s){
int r=0,i,t=1;
for (i = s.size()-1; i >=0; i--)//倒过来输出
{
r=r+(s[i]-'0')*t;
t=t*2;
}
// 字符数组存放转换后的数
char c;
if(r<10){
c=r+'0';
}else{
c=r+'A'-10;
}
return c;//返回c
}
int main(){
string s,t;
cin>>s;
//先判断字符串的长度是否为4的倍数,不是的话补零
if(s.size()%4==1){
s="000"+s;
}else if(s.size()%4==2){
s="00"+s;
}else if(s.size()%4==3){
s="0"+s;
}
// cout<<s<<endl;
for (int i = 0; i<s.size(); i=i+4)
{
t=s.substr(i,4);
cout<<num(t);//将截取的四位二进制步步转换
}
system("pause");
return 0;
}
3