关注
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 15:17
门头沟学院 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 26届校招投递进展 #
27901次浏览 217人参与
# 小米提前批笔试难吗 #
33794次浏览 355人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
8855次浏览 104人参与
# 为了找工作你花了哪些钱? #
26948次浏览 257人参与
# 烟草笔面经互助 #
16786次浏览 180人参与
# 打工人的精神状态 #
49259次浏览 857人参与
# 大疆的机械笔试比去年难吗 #
72803次浏览 618人参与
# 你觉得专业和学校哪个对薪资影响最大 #
61226次浏览 490人参与
# 牛友们,签完三方你在忙什么? #
98113次浏览 852人参与
# 你秋招想去哪些公司 #
21643次浏览 798人参与
# 你今年的保底offer是哪家 #
118142次浏览 537人参与
# 你觉得比亚迪今年还有春招吗? #
191138次浏览 1050人参与
# 视觉/交互/设计百问百答 #
46357次浏览 435人参与
# 秋招结束之后的日子 #
75131次浏览 909人参与
# kpi面有什么特征 #
52168次浏览 402人参与
# 机械人春招想让哪家公司来捞你? #
344413次浏览 3078人参与
# 机械人你觉得今年行情怎么样? #
1285次浏览 27人参与
# 那些我实习了才知道的事 #
210893次浏览 1721人参与
# 如何缓解入职前的焦虑 #
192218次浏览 1339人参与
# 查收我的offer竞争力报告 #
189458次浏览 1265人参与
# 为什么国企只招应届生 #
178303次浏览 1157人参与