base-n

Crates.iobase-n
lib.rsbase-n
version0.1.0
created_at2025-08-25 10:54:37.062594+00
updated_at2025-08-25 10:54:37.062594+00
descriptionA Base32 library supporting multiple alphabats.
homepage
repositoryhttps://github.com/Leawind/base-n
max_upload_size
id1809359
size42,331
Leawind (Leawind)

documentation

README

base-n

A Base32 encoding/decoding library supporting multiple alphabats.

It is #![no_std] compatible.

Usage

Encode data using RFC 4648 with padding

use base_n::{Encoder, base32, Decoder};

fn main() {
    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

Multiple Base32 variants support

Commit count: 3

cargo fmt