关注
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-02 14:02
上海大学 深度学习 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的实习日记 #
4146347次浏览 33218人参与
# 你投了多少家公司?进展是___ #
252696次浏览 1490人参与
# 第3届现代汽车Code Faster急速编程挑战赛 #
27346次浏览 482人参与
# 秋招投递记录 #
429911次浏览 3319人参与
# 你投递的公司有几家约面了? #
175208次浏览 1048人参与
# 城市生存手册 #
1400次浏览 20人参与
# 今年形式下双非本找得到工作吗 #
340034次浏览 1797人参与
# 重来一次,你会对开始求职的自己说 #
55469次浏览 517人参与
# 秋招提前批,你开始投了吗 #
772647次浏览 8500人参与
# 你认为小厂实习有用吗? #
153430次浏览 810人参与
# 实习返校后,你的精神状态是__? #
47796次浏览 174人参与
# 通信/硬件求职避坑tips #
179739次浏览 1177人参与
# 为了找工作你投递了多少公司? #
122745次浏览 774人参与
# 产品实习,你更倾向大公司or小公司 #
234912次浏览 2169人参与
# 这个工作能去吗 #
184290次浏览 961人参与
# 你开始找寒假实习了吗? #
110414次浏览 633人参与
# 聊聊你的职场新体验 #
363986次浏览 1939人参与
# 我的租房踩坑经历 #
232167次浏览 1342人参与
# 实习生的生存小技巧 #
42207次浏览 366人参与
# 如何看待应届生身份? #
261394次浏览 2364人参与
# 你找工作想离家近 or 离家远? #
55256次浏览 403人参与