Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c++ base64

作者:★执着唯她   发布日期:2026-06-28   浏览:71

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

// Base64编码表
static const std::string base64_chars =
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    "abcdefghijklmnopqrstuvwxyz"
    "0123456789+/";

// 检查字符是否为Base64字符
inline bool is_base64(unsigned char c) {
    return (isalnum(c) || (c == '+') || (c == '/'));
}

// 将字符转换为Base64编码
std::string base64_encode(const std::string &in) {
    std::string out;
    int val = 0, valb = -6;
    for (unsigned char c : in) {
        val = (val << 8) + c;
        valb += 8;
        while (valb >= 0) {
            out.push_back(base64_chars[(val >> valb) & 0x3F]);
            valb -= 6;
        }
    }
    if (valb > -6) out.push_back(base64_chars[((val << 8) >> (valb + 8)) & 0x3F]);
    while (out.size() % 4) out.push_back('=');
    return out;
}

// 将Base64编码转换回字符
std::string base64_decode(const std::string &in) {
    std::string out;
    std::vector<int> T(256, -1);
    for (int i = 0; i < 64; i++) T[base64_chars[i]] = i;

    int val = 0, valb = -8;
    for (unsigned char c : in) {
        if (T[c] == -1) break;
        val = (val << 6) + T[c];
        valb += 6;
        if (valb >= 0) {
            out.push_back(char((val >> valb) & 0xFF));
            valb -= 8;
        }
    }
    return out;
}

int main() {
    std::string input = "Hello, World!";
    std::string encoded = base64_encode(input);
    std::string decoded = base64_decode(encoded);

    std::cout << "Original: " << input << std::endl;
    std::cout << "Encoded: " << encoded << std::endl;
    std::cout << "Decoded: " << decoded << std::endl;

    return 0;
}

解释说明

  1. Base64编码表:

    • base64_chars 定义了Base64编码中使用的字符集,包括大写字母、小写字母、数字以及特殊字符 +/
  2. 检查字符是否为Base64字符:

    • is_base64 函数用于检查一个字符是否属于Base64字符集。
  3. Base64编码:

    • base64_encode 函数将输入字符串转换为Base64编码。它通过逐个字节处理输入字符串,并将其转换为Base64字符。最后根据需要添加填充字符 =
  4. Base64解码:

    • base64_decode 函数将Base64编码的字符串还原为原始字符串。它通过查找每个Base64字符在编码表中的位置,并将其转换回原始字节。
  5. 主函数:

    • main 函数演示了如何使用上述函数进行Base64编码和解码。它首先定义了一个原始字符串,然后对其进行编码和解码,并输出结果以验证正确性。

上一篇:c++程序设计基础

下一篇:c++ pi

大家都在看

c++闭包

c++向上取整的代码

c++单引号和双引号的区别

c++ 注释

c++如何判断素数

c++怎么输入字符串

c++字符串切片

c++ functional

c++框架代码

c++格式化字符串

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站