ZBLOG

base64 c++

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

C++ 示例代码

#include <iostream>
#include <string>
#include <vector>

// Base64字符集
static const std::string base64_chars =
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    "abcdefghijklmnopqrstuvwxyz"
    "0123456789+/";

// 编码函数
std::string base64_encode(const std::string& input) {
    std::string encoded;
    int val = 0, valb = -6;

    for (unsigned char c : input) {
        val = (val << 8) + c;
        valb += 8;
        while (valb >= 0) {
            encoded.push_back(base64_chars[(val >> valb) & 0x3F]);
            valb -= 6;
        }
    }

    if (valb > -6) { // 如果还有剩余的位,填充‘=’
        encoded.push_back(base64_chars[((val << 8) >> valb) & 0x3F]);
        encoded.append((valb == -2 ? "==" : "=")); // 根据剩余位数添加填充符
    }

    return encoded;
}

// 解码函数
std::string base64_decode(const std::string& input) {
    std::vector<int> T(256, -1);
    
    for (int i = 0; i < 64; i++)
        T[base64_chars[i]] = i;

    std::string decoded;
    
    int val = 0, valb = -8;
    
    for (unsigned char c : input) {
        if (T[c] == -1)
            break;

        val = (val << 6) + T[c];
        valb += 6;
        
        if (valb >= 0) {
            decoded.push_back(char((val >> valb) & 0xFF));
            valb -= 8;
        }
    }

    return decoded;
}

int main() {
    std::string original_string = "Hello, Base64!";
    
    // 编码
    std::string encoded = base64_encode(original_string);
    
    std::cout << "Encoded: " << encoded << "\n";
    
    // 解码
    std::string decoded = base64_decode(encoded);
    
    std::cout << "Decoded: " << decoded << "\n";
    
    return 0;
}

实现说明

  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

注册

已经有帐号?