关注
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
相关推荐
06-20 18:53
莆田学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你被哪些公司秒挂过? #
7860次浏览 108人参与
# 26届的你们有几段实习? #
2431次浏览 56人参与
# 如何提高实习转正率? #
4618次浏览 90人参与
# 第一份工作应该只看薪资吗 #
152757次浏览 1530人参与
# 大厂面试初体验 #
11988次浏览 86人参与
# 你想留在一线还是回老家? #
48921次浏览 503人参与
# 你认为哪些项目算烂大街? #
3049次浏览 78人参与
# 你以为的实习VS真实的实习 #
3581次浏览 62人参与
# 选完offer后,你后悔学本专业吗 #
47813次浏览 239人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
9500次浏览 119人参与
# 你后悔自己读研吗? #
3999次浏览 113人参与
# 拼多多工作体验 #
29419次浏览 201人参与
# 最难的技术面是哪家公司? #
2415次浏览 35人参与
# 月薪多少能在一线城市生存 #
4942次浏览 103人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
113878次浏览 792人参与
# leader认为你工作不认真怎么办 #
31911次浏览 150人参与
# 如果可以,你希望哪个公司来捞你 #
103789次浏览 497人参与
# 如果公司降薪,你会跳槽吗? #
80011次浏览 588人参与
# 妈妈治愈了你哪些脆皮时刻 #
29346次浏览 321人参与
# 如果公司给你放一天假,你会怎么度过? #
17577次浏览 129人参与