Base64
A modern C++ base64 encoder / decoder
Install / Use
/learn @tobiaslocker/Base64README
base64
A simple, header-only C++17 library for Base64 encoding and decoding. Uses modern C++ features when available
(e.g., std::bit_cast in C++20) while remaining portable and efficient.
Features
- Header-only, single-file library
- Fast encoding/decoding using lookup tables
- Safe type punning using
std::bit_cast(avoids undefined behavior with unions) - Throws
std::runtime_errorfor invalid Base64 input (size, padding, or characters)
Platform Support
- Compilers: GCC, Clang, MSVC
- Architectures: x86, x64, ARM, AArch64 (little-endian)
- Requires C++17 (C++20 features optional)
Usage
#include <iostream>
#include "base64.hpp"
int main() {
auto encoded = base64::to_base64("Hello, World!");
std::cout << encoded << std::endl; // SGVsbG8sIFdvcmxkIQ==
auto decoded = base64::from_base64("SGVsbG8sIFdvcmxkIQ==");
std::cout << decoded << std::endl; // Hello, World!
}
Notes
- Inspired by Nick Galbreath's modp_b64 (used by Chromium) for high performance
- Compatible with C++17; optionally uses C++20 features
- Avoids union-based type punning for safety
- Faster implementations exist using SIMD or multithreading but are not header-only
References
- Benchmark of C/C++ Base64 libraries: https://github.com/gaspardpetit/base64/
- Chromium modp_b64: https://github.com/chromium/chromium/tree/main/third_party/modp_b64
- SIMD/optimized alternatives:
- https://github.com/aklomp/base64
- https://github.com/simdutf/simdutf
- https://github.com/powturbo/Turbo-Base64
Related Skills
node-connect
339.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
339.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.9kCommit, push, and open a PR
