Skip to content

🔣 base32 encoding and decoding that optimizes byte size based on input characters and supports unicode.

License

Notifications You must be signed in to change notification settings

busterc/x-base-32

Repository files navigation

x-base-32 NPM version Build Status Dependency Status Coverage percentage

base32 encoding and decoding that optimizes byte size based on input characters and supports unicode.

Installation

$ npm install --save x-base-32

Usage

const xBase32 = require('x-base-32');

xBase32.decode(xBase32.encode('🦁🐯🐻'));
// => 🦁🐯🐻

xBase32.encode('Lions and tigers and bears!');
// => 89hmpyvkk41gpws10ehmpesbjecg62vk441h6arbjecgg7
xBase32.encode('אריות ונמרים ודובים!');
// => bq8bt5v6xbfa0gbndw2xxf8qcvq842xbekqavmdv6xt116
xBase32.encode('الأسود والنمور والدببة!');
// => brkwh64f37j8rqg86932fj4s3che933210s4c9y8k2zh8rmca844b
xBase32.encode('獅子,老虎和熊!');
// => ged2npm7z1j0031jeaj6732qz047
xBase32.encode('Львы и тигры и медведи!');
// => bgdrk46a4p10gw0848a3h1kh08jr423g10gy8dc6j351ngt8e0445
xBase32.encode('ライオンとトラとクマ!');
// => g63mk191gn8rf6c3863431t9gd0rayc6yzw0gs
xBase32.encode('🦁🐯🐻');
// => gv0zdv0er7qe2zp1xvgxg3

// Ignores invalid symbols during decoding
xBase32.decode('gv0z-dv0e-r7qe-2zp1-xvgx-g3');
// => 🦁🐯🐻

Scheme Requirements

  • Humans can accurately transmit the symbols to other humans using a telephone.
    • Only use numeric and lowercase alpha characters: [0-9], [a-h], j, k, m, n, [p-t], [v-z]
    • Re-map certain error-prone characters when they are provided for decoding:
      i -> 1
      I -> 1
      l -> 1
      L -> 1
      o -> 0
      O -> 0
      
    • Ignore all other characters providing during decoding
  • URI :: Path safe
  • Case Insensitive File System safe
  • Support the full 21-bit Unicode character set
  • Append a check digit for validating data integrity

TODO

License

ISC © Buster Collings