不说废话直接上代码
std::string smtp::toBase64(string str)
{
string base64_basic = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
string res;
string strTobitRes;
for (int i = 0; i < str.length(); ++i) {
bitset<8> bit(str[i]);
strTobitRes += bit.to_string();
}
while (true) { //不是6的倍数补零
if (strTobitRes.length() % 6 != 0) {
strTobitRes = strTobitRes + '0';
}
else break;
}
for (int i = 0; i < strTobitRes.length(); i = i + 6) {
string split = strTobitRes.substr(i, 6);
bitset<10> bit(split);
res += base64_basic[bit.to_ulong()];
if (res.length() % 75 == 0) res += '\n'; //每行最多76个字符
}
while (true) {
if (res.length() % 4 != 0) { //不是4的倍数布‘=’
res += '=';
}
else break;
}
return res;
}
该博客展示了如何使用C++将字符串转换为Base64编码。代码中定义了一个名为`smtp::toBase64`的函数,它接受一个字符串参数,通过位操作将其转换为Base64格式。过程中,首先将每个字符转换为二进制字符串,然后填充到6的倍数位,接着将每6位二进制转换回十进制并查找Base64字符映射表,最后添加行尾换行符并根据Base64编码规则补充等号。
3386

被折叠的 条评论
为什么被折叠?



