encode binary data in human-friendly base32 format
Inspired from https://philzimmermann.com/docs/human-oriented-base-32-encoding.txt
- Easy to copy and paste
- Encoded text doesn't contains symbols, hence able to select entirely with double-click
- Easy to read: avoids visually similar characters
0lv2
- Omit
0
because it looks likeo
- Omit
l
because it looks like1
andi
- Omit
v
because it looks likeu
andr
- Omit
2
because it looks likez
- Omit
- Case insensitive
- Do not need padding characters
- Results in shorter encoded text
- The length may be already known in the context, e.g. sha1://xxxx or md5://xxxx
- The length can be stored externally explicitly, e.g. 256:xxxx
// end-to-end encode/decode functions
export function binary_string_to_base32_string(binary_string: string): string;
export function base32_string_to_binary_string(string: string, bits_len?: number): string;
// helper functions
export function binary_string_to_bits(binary_string: string): Uint8Array;
export function bits_to_base32_string(bits: ArrayLike<number>): string;
export function bits_to_bytes(bits: ArrayLike<number>): Uint8Array;
export function bytes_to_bits(bytes: ArrayLike<number>): Uint8Array;
export function bytes_to_binary_string(bytes: ArrayLike<number>): string;
export function bytes_to_base32_string(bytes: ArrayLike<number>): string;
export function base32_string_to_bytes(string: string, bits_len?: number): Uint8Array;
export function base32_string_to_bits(string: string, bits_len?: number): Uint8Array;
This project is licensed with BSD-2-Clause
This is free, libre, and open-source software. It comes down to four essential freedoms [ref]:
- The freedom to run the program as you wish, for any purpose
- The freedom to study how the program works, and change it so it does your computing as you wish
- The freedom to redistribute copies so you can help others
- The freedom to distribute copies of your modified versions to others