#include <bits/stdc++.h>
using namespace std;
int main(){
string str1,str0,ret = "";
while(cin >> str1){
//cin >> str1;
//反转既可以从头开始切割
reverse(str1.begin(),str1.end());
//cout << str1 << endl;
int n;//连续5位二进制对应的十进制数
ret = ""; //结果字符串
for(int i = 0; i < str1.length(); i+=5){
n = 0;
//分析i后面是否还有5个数
if(str1.length()-1 - i + 1 >= 5){
str0 = str1.substr(i, i+5);
for(int j = 0; j <= str0.length()-1; j++){
n += (str0[j]-'0') * pow(2,j);
}
//cout << str0 << " : " << n << endl;
}
//如果i后面长度<5
if(str1.length()-1 - i + 1 < 5){
str0 = str1.substr(i,str1.length());
for(int j = 0; j <= str0.length()-1; j++){
n += (str0[j]-'0') * pow(2,j);
}
//cout << str0 << " : " << n << endl;
//break;
}
int t = n % 32;
if(t <= 9){ret += ('0' + t);}
else{ret += ('A' + (t-10));}
}
//ret反转
reverse(ret.begin(),ret.end());
cout << ret << endl;
}
return 0;
}
50%通过率,请大佬帮忙纠错
全部评论
(0) 回帖