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

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.dtcms.com/a/233834.html

相关文章:

  • 欧拉公式简明推导
  • 如何通过ETLCloud实现跨系统数据同步?
  • 【持续更新】c++指针相关试题
  • STM32入门教程——OLED调试工具
  • 核心机制:延时应答,捎带应答,面向字节流
  • nginx.conf配置详解:从(413 Request Entity Too Large)说起
  • RPG22.处理武器碰撞
  • Thumb-2指令集及其与STM32的关系
  • [前端]Promsie常见应用场景——网络请求、定时任务、文件操作和并发控制,并以并发请求为详细进行详解
  • python版若依框架开发:前端开发规范
  • Java + Spring Boot + Mybatis 插入数据后,获取自增 id 的方法
  • 客户体验数据使用的三种视角——场景视角
  • 企业管理中,商业智能BI主要做哪些事情?
  • 【Elasticsearch】 查询优化方式
  • 技术文档写作全攻略
  • 三分算法与DeepSeek辅助证明是单峰函数
  • 鸿蒙开发List滑动每项标题切换悬停
  • RAG:大模型微调的革命性增强——检索增强生成技术深度解析
  • 简易EPOLL模型
  • XTEA与TEA的区别
  • Linux信号捕捉技术深度解析
  • 统信桌面专业版如何使用python开发平台jupyter
  • CUDA安装与多版本管理
  • 安科瑞防逆流方案落地内蒙古中高绿能光伏项目,筑牢北疆绿电安全防线
  • 在MATLAB中使用自定义的ROS2消息
  • Next.js+prisma开发一
  • HTV 3.3 | 秒播无卡顿 直播源每天维护更新
  • 【STL】函数对象+常用算法
  • 【Modbus 通讯协议从入门到放弃二:实战】
  • Playwright 测试框架 - Java