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

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Mar 6, 2018
34bbc83 · Mar 6, 2018

History

4 Commits
Mar 6, 2018
Mar 6, 2018
Mar 6, 2018
Mar 6, 2018
Mar 6, 2018
Mar 6, 2018
Mar 6, 2018
Mar 6, 2018
Mar 6, 2018
Mar 6, 2018
Mar 6, 2018
Mar 6, 2018

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