上一篇博客中分享的案例里面base64编码的工具函数单独拿出来分享一下,为不想自己写的大佬提供快捷的CV路径
const std::string base64_chars ="ABCDEFGHIJKLMNOPQRSTUVWXYZ""abcdefghijklmnopqrstuvwxyz""0123456789+/";std::string base64_encode(const std::string &input) { std::string encoded; size_t i = 0, j = 0; uint8_t byte3[3] = {0}; uint8_t byte4[4] = {0}; // 遍历输入字符串中的每个字符 for (char byte : input) { byte3[i++] = static_cast<uint8_t>(byte); // 假设输入是ASCII if (i == 3) { byte4[0] = (byte3[0] & 0xfc) >> 2; byte4[1] = ((byte3[0] & 0x03) << 4) | ((byte3[1] & 0xf0) >> 4); byte4[2] = ((byte3[1] & 0x0f) << 2) | ((byte3[2] & 0xc0) >> 6); byte4[3] = byte3[2] & 0x3f; // 添加编码后的字符到结果字符串 for (int k = 0; k < 4; k++) { encoded += base64_chars[byte4[k]]; } i = 0; } } // 处理剩余字符(如果有) if (i != 0) { for (size_t k = i; k < 3; k++) { byte3[k] = 0; // 填充剩余字节为0 } // 执行编码,类似于前面的处理 byte4[0] = (byte3[0] & 0xfc) >> 2; byte4[1] = ((byte3[0] & 0x03) << 4) | ((byte3[1] & 0xf0) >> 4); byte4[2] = ((byte3[1] & 0x0f) << 2) | ((byte3[2] & 0xc0) >> 6); // 添加编码后的字符到结果字符串 for (size_t k = 0; k < i + 1; k++) { encoded += base64_chars[byte4[k]]; } // 添加'='以填充到4的倍数 while (i++ < 3) { encoded += '='; } } std::cout << "base64 size:" << encoded.size() << std::endl;return encoded; }