程序如下:
#include<bits/stdc++.h>
using namespace std;
//整体思路:二进制中的4个数字对应1个16进制数字
char a[100010];
int main(){
string s;
cin >>s;
int t=s.size(); //确定字符串中的字符个数
if (t%4!=0) //如果字符个数不是4的倍数,前面加0
{
for (int i=1;i<=4-t%4;i++) s='0'+s; //实现前面加0,使字符个数是4的倍数
}
for (int i=0;i<t;i+=4) //每4位二进制数转换成1位16进制数
{
if (s[i]=='0' && s[i+1]=='0' && s[i+2]=='0' && s[i+3]=='0') cout <<0;
if (s[i]=='0' && s[i+1]=='0' && s[i+2]=='0' && s[i+3]=='1') cout <<1;
if (s[i]=='0' && s[i+1]=='0' && s[i+2]=='1' && s[i+3]=='0') cout <<2;
if (s[i]=='0' && s[i+1]=='0' && s[i+2]=='1' && s[i+3]=='1') cout <<3;
if (s[i]=='0' && s[i+1]=='1' && s[i+2]=='0' && s[i+3]=='0') cout <<4;
if (s[i]=='0' && s[i+1]=='1' && s[i+2]=='0' && s[i+3]=='1') cout <<5;
if (s[i]=='0' && s[i+1]=='1' && s[i+2]=='1' && s[i+3]=='0') cout <<6;
if (s[i]=='0' && s[i+1]=='1' && s[i+2]=='1' && s[i+3]=='1') cout <<7;
if (s[i]=='1' && s[i+1]=='0' && s[i+2]=='0' && s[i+3]=='0') cout <<8;
if (s[i]=='1' && s[i+1]=='0' && s[i+2]=='0' && s[i+3]=='1') cout <<9;
if (s[i]=='1' && s[i+1]=='0' && s[i+2]=='1' && s[i+3]=='0') cout <<'A';
if (s[i]=='1' && s[i+1]=='0' && s[i+2]=='1' && s[i+3]=='1') cout <<'B';
if (s[i]=='1' && s[i+1]=='1' && s[i+2]=='0' && s[i+3]=='0') cout <<'C';
if (s[i]=='1' && s[i+1]=='1' && s[i+2]=='0' && s[i+3]=='1') cout <<'D';
if (s[i]=='1' && s[i+1]=='1' && s[i+2]=='1' && s[i+3]=='0') cout <<'E';
if (s[i]=='1' && s[i+1]=='1' && s[i+2]=='1' && s[i+3]=='1') cout <<'F';
}
return 0;
}