ZBLOG

base64 c++

下面是一个简单的C++实现的Base64编码和解码示例。这段代码可以帮助你将字符串转换为Base64格式,并且能够从Base64格式中恢复原始字符串。

C++ 示例代码

  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. // Base64字符集
  5. static const std::string base64_chars =
  6. "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  7. "abcdefghijklmnopqrstuvwxyz"
  8. "0123456789+/";
  9. // 编码函数
  10. std::string base64_encode(const std::string& input) {
  11. std::string encoded;
  12. int val = 0, valb = -6;
  13. for (unsigned char c : input) {
  14. val = (val << 8) + c;
  15. valb += 8;
  16. while (valb >= 0) {
  17. encoded.push_back(base64_chars[(val >> valb) & 0x3F]);
  18. valb -= 6;
  19. }
  20. }
  21. if (valb > -6) { // 如果还有剩余的位,填充‘=’
  22. encoded.push_back(base64_chars[((val << 8) >> valb) & 0x3F]);
  23. encoded.append((valb == -2 ? "==" : "=")); // 根据剩余位数添加填充符
  24. }
  25. return encoded;
  26. }
  27. // 解码函数
  28. std::string base64_decode(const std::string& input) {
  29. std::vector<int> T(256, -1);
  30. for (int i = 0; i < 64; i++)
  31. T[base64_chars[i]] = i;
  32. std::string decoded;
  33. int val = 0, valb = -8;
  34. for (unsigned char c : input) {
  35. if (T[c] == -1)
  36. break;
  37. val = (val << 6) + T[c];
  38. valb += 6;
  39. if (valb >= 0) {
  40. decoded.push_back(char((val >> valb) & 0xFF));
  41. valb -= 8;
  42. }
  43. }
  44. return decoded;
  45. }
  46. int main() {
  47. std::string original_string = "Hello, Base64!";
  48. // 编码
  49. std::string encoded = base64_encode(original_string);
  50. std::cout << "Encoded: " << encoded << "\n";
  51. // 解码
  52. std::string decoded = base64_decode(encoded);
  53. std::cout << "Decoded: " << decoded << "\n";
  54. return 0;
  55. }

实现说明

  1. Base64字符集

    • base64_chars字符串包含所有的Base64字符,用于编码和解码过程。
  2. base64_encode

    • 遍历输入字符串,将每个字符转换为其对应的Base64值。
    • 使用左移和按位与操作来处理字节流,并在需要时添加填充符号(=)。
  3. base64_decode

    • 创建一个查找表,将每个Base64字符映射到其对应的值。
    • 遍历输入字符串,逐个解析字符并还原成原始字节。
  4. main函数

    • 测试了编码和解码过程,并打印出结果。

注意事项

  • Base64通常用于数据传输,例如在电子邮件或HTTP中传输二进制数据,因此请确认此实现符合你的需求。
  • 如果你的输入包含不合法的Base64字符,解码时可能会出现问题,你可以根据具体情况增加错误处理机制。


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22326

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?