编解码
本目录汇总了通用数据编解码/校验工具的基础使用教程和选型建议,涵盖 Base64、CRC 等核心能力。我们基于“使用场景 + 性能需求 + 生态兼容性”推荐最优实现,帮助开发者快速选择和落地方案。
Base64
主流 Base64 库
- 基础稳定实现:turbo、abseil
- 核心特点:算法成熟稳定,跨平台兼容性好,无特殊硬件依赖,API 设计友好;
- 生态兼容性:turbo/abseil 为主流 C++ 基础库,可无缝集成到大多数业务项目。
- 高性能实现:vamos
- 核心特点:SIMD 指令集加速,编码/解码速度比传统算法高数倍,无动态内存分配;
- 硬件依赖:需 CPU 支持 SIMD(如 x86 的 SSE/AVX,ARM 的 NEON)。
- 其他常用库:
- OpenSSL:内置 Base64 编解码接口,适合已集成 OpenSSL 的加密/网络项目;
- nlohmann-json:提供轻量 Base64 工具函数,适合 JSON 序列化场景轻量使用。
选型建议
- 轻量通用场景(使用频率低、单次数据量小)
- 推荐:
turbo::base64 - 理由:无需额外引入专用库,可直接在 turbo 生态内调用,API 简洁满足日常基础需求。
- 高性能场景(大数据量、高频调用)
- 推荐:
vamos::base64 - 理由:SIMD 加速显著提升性能,无内存分配开销,适合大数据处理、CDN 内容转换、高并发服务等核心场景。
- 生态匹配场景
- 项目已基于 abseil 技术栈:优先使用
abseil::base64保持技术栈一致; - 项目已集成 OpenSSL/nlohmann-json:直接使用库内置 Base64 接口,减少依赖冗余。
总结
| 场景类型 | 推荐库 | 核心优势 |
|---|---|---|
| 轻量通用 | turbo | 易用,无额外依赖 |
| 高性能高吞吐 | vamos | SIMD 加速,低内存开销 |
| 生态匹配(加密/JSON) | OpenSSL/nlohmann-json | 无新依赖,契合现有业务 |
十六进制编码/解码
概述
十六进制编码/解码支持二进制与十六进制字符串的双向转换,主要用于轻量场景,如日志打印、网络包解析、加密密钥可视化。函数逻辑简单,无复杂参数配置。
支持库 & 选型建议
| 库 | 核心描述 | 选型建议 |
|---|---|---|
| turbo | 入口:turbo/strings/escape.h,提供基础 HexEncode/HexDecode 接口,符合项目核心技术栈,无额外依赖 | 强烈推荐:所有十六进制编码/解码场景均可使用 turbo,接口简单且与项目依赖一致 |
| abseil | 提供基础十六进制编解码功能,但在本项目中仅因 protobuf 依赖间接引入,未主动集成或使用 | 不推荐主动使用:仅在遗留代码依赖 abseil 时兼容,所有新场景建议使用 turbo |
集成指南
- 集成 turbo 库:参考 integration/turbo.md