不说废话直接上代码
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;
}