Expand description
A Base32 encoding/decoding library supporting multiple alphabats.
It is #![no_std]
compatible.
§Multiple Base32 variants support
- RFC 4648
- RFC 4648 Hex
- Crockford Base32
- Z-Base32
- YiDu (Chinese-optimized, avoids pronouncing confusion like E~1 / R~2)
- Custom variants
§Usage
Encode data using RFC 4648 with padding
use base_n::{Encoder, base32, Decoder};
let data = 0xB93246A429u64.to_be_bytes().to_vec();
assert_eq!(&data, &[0, 0, 0, 0xB9, 0x32, 0x46, 0xa4, 0x29]);
// Encoding
let encoded = base32::RFC4648_PAD.encode(&data);
assert_eq!(encoded, "AAAABOJSI2SCS===");
// Decoding
let decoded = base32::RFC4648_PAD.decode(&encoded).unwrap();
assert_eq!(data, decoded);
Customized alphabet
use base_n::{Encoder, base32::Base32Variant};
const CUSTOM_BASE32: Base32Variant = Base32Variant::builder()
.name("Custom")
.mapping(b"ABCDEFGHIJKLMNOPQRSTUVWXYZ123456")
.build();
println!("{}", CUSTOM_BASE32.encode(b"Hello, world!")); // JBSWY2DPFQQHO22SNRSCC