当前位置: 首页 > web >正文

009-libb64 迅速上手 libb64 -C++开源库108杰

迅速上手 lib64,轻轻松松在 C++ 开发库上再下一城: base64 编解码。

 

1 简介

libb64 是个有点年纪的 base64 编解码库。

  • 官方主页:https://libb64.sourceforge.net
  • 第三方帮助克隆到 github:GitHub - libb64/libb64: A fork of http://libb64.sourceforge.net/ with patches and new functions

其中 github 上的代码有所修改,目的是为了支持能得到“不换行”的base64编码,但其做法(很)不好,建议有此需求的同学,可参考本课堂附录一给出的改进。

归纳起来,libb64有三个主要特点:

  1. 性能保障: 使用了 C 语言 BUG 一样的 “魔法协程”,即:利用在 switch 结构中跨 case 分支存在的 while 循环,以实现一个普通函数可以类似一个协程,支持保持状态的函数重入(示例代码见本课堂附录二);
  2. 完全自由使用,零协议。“you can take it and do whatever you want with it”;
  3. 核心代码使用 C 实现,同时提供简捷的 C++ 封装。

2 安装

  • msys2/UCRT64 环境: pacman -S mingw-w64-ucrt-x86_64-libb64
  • msys2/mingw64 环境 : pacman -S mingw-w64-x86_64-libb64

3. libb64 C++接口

// 头文件
#include <b64/encode.h> // 编码
#include <b64/decode.h> // 解码// 编码(bin →  base64):
void base64::encoder::encode(std::istream& is, std::ostream& os);
// 解码(base64 →  bin):
void base64::decoder::decode(std::istream& is, std::ostream& os);

C++接口,编码解码均使用流作为参数。参数1为输入流,用于从中得到原数据,参数2为输出流,用于输出编码结果。因此,官网上给出的最简单的编码例子是:

base64::encoder er;
er.encode(std::cin, std::cout);

4. 项目实践视频

014-libB64-认识、安装、上手 libB64

http://www.xdnf.cn/news/12353.html

相关文章:

  • jar包如何引入
  • 汇川变频器MD600S-4T-5R5为什么要搭配GRJ9000S-10-T滤波器?
  • 使用 CMAKE_DEBUG_TARGET_PROPERTIES调试目标属性
  • ml307 二次开发
  • 阶段技术问答题目
  • 执行什么命令可以让内存使用率达到80%
  • STM32寄存器访问位宽确实存在16位和32位的混合情况但地址上一定要4字节对齐
  • 智慧照明:集中控制器、单双灯控制器与智慧灯杆网关的高效协同
  • 轻松掌控硬件接口:LuatIO可视化工具,物联网开发的“效率加速器”!
  • PS如何傻瓜式扣图、图片编辑、图片合成
  • 2025.5.28【33OJ NOI 模拟赛 T3】字符串(AC自动机, 字符串后缀结构)
  • [蓝桥杯]耐摔指数
  • World of Warcraft [Vault of Archavon][Reins of the Grand Black War Mammoth]
  • 导航路径优化(一)——平滑
  • Docker MCP 目录和工具包简介:使用 MCP 为 AI 代理提供支持的简单安全方法
  • Java 中比较两个 long 类型变量大小的方法
  • 从Gartner报告看Atlassian在生成式AI领域的创新路径与实践价值
  • Compose Multiplatform 实现自定义的系统托盘,解决托盘乱码问题
  • 电路设计基础-3
  • C# 委托UI控件更新例子,何时需要使用委托
  • leetcode1519. 子树中标签相同的节点数- medium
  • Python文件读取漏洞深度解析与防护指南
  • P10909 [蓝桥杯 2024 国 B] 立定跳远
  • 《涨停28式》速读笔记
  • 数据分析Agent构建
  • Word文档重新打开后标题自动缩进的解决方法
  • 基于eclipse进行Birt报表开发
  • 亲测解决grad can be implicitly created only for scalar outputs
  • 不同类型的语义相似度损失函数(SentenceTransformerLoss)
  • windows环境Google-sparsehash安装