关注
string _hex2bits(char s)
{
int num;
if ('0' <= s &;&; s <= '9'){
num = s - '0';
} else{
num = s - 'A' + 10;
}
string str;
for (int i = 0; i < 8; i++)
{
int mod = num % 2;
str.push_back('0' + mod);
num = num / 2;
}
reverse(str.begin(), str.end());
return str;
}
int _bits2num(string&; str)
{
int result = 0;
int base = 1;
for (int i = str.length()-1; i >= 0; i--) {
if (str[i] == '1'){
result += base;
}
base *= 2;
}
return result;
}
char _num2char(int num)
{
assert(num >= 0 &;&; num <= 63);
if (0 <= num &;&; num <= 25)
{
return 'A' + (num - 0);
}
else if (26 <= num &;&; num <= 51)
{
return 'a' + (num - 26);
}
else if (52 <= num &;&; num <= 61)
{
return '0' + (num - 52);
}
else if (num == 62)
{
return '+';
}
else
{
return '//';
}
}
void hex2base64(string&; str)
{
transform(str.begin(), str.end(), str.begin(), ::toupper);
int mod = str.length() % 3;
mod = mod == 0 ? -1 : 3 - mod;
string tmp;
for (int i = 0; i < str.length(); i++){
tmp += _hex2bits(str[i]);
}
for (int i = 0; i+6 <= tmp.length(); i = i+6)
{
string base64bits = tmp.substr(i, 6);
int num = _bits2num(base64bits);
cout << _num2char(num);
}
for (int i = 0; i < mod+1; i++)
{
cout << '=';
}
}
int main()
{
string test1 = "1A2";
hex2base64(test1);
return 0;
}
查看原帖
3 3
相关推荐
点赞 评论 收藏
分享
02-26 13:58
门头沟学院 Java 点赞 评论 收藏
分享
03-22 23:47
河南推拿职业学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习进度记录 #
154561次浏览 1724人参与
# 我的求职精神状态 #
2951次浏览 79人参与
# 平安产险科技中心求职汇总 #
244494次浏览 2613人参与
# 京东美团大战,你怎么看? #
21286次浏览 191人参与
# 好未来求职进展汇总 #
6043次浏览 46人参与
# 大家每天通勤多久? #
30984次浏览 229人参与
# Keep实习校招 #
48924次浏览 252人参与
# 大城市找工作会更容易吗 #
16435次浏览 125人参与
# 金山WPS工作体验 #
20794次浏览 133人参与
# 提前批过来人的忠告 #
97677次浏览 1092人参与
# 签约有哪些注意事项 #
27094次浏览 227人参与
# 招银网络科技工作体验 #
18829次浏览 85人参与
# 生化环材还是天坑吗 #
30037次浏览 277人参与
# 4399求职进展汇总 #
17528次浏览 139人参与
# 中兴求职进展汇总 #
579607次浏览 2614人参与
# 华为存储OD事变 #
121680次浏览 681人参与
# 京东工作体验 #
12535次浏览 88人参与
# 生物制药/化工校招攻略 #
39968次浏览 275人参与
# 校招第一份工作你干了多久? #
66756次浏览 334人参与
# 腾讯音乐求职进展汇总 #
82136次浏览 450人参与
# 小红书求职进展汇总 #
49628次浏览 441人参与
# 宁德时代求职进展汇总 #
104946次浏览 622人参与