encode32

1.1.0 · abandoned · verified Sun Apr 19

encode32 is a utility for Base32 encoding 32-bit unsigned integers, drawing inspiration from Douglas Crockford's Base32 specification. Released as version 1.1.0, its release cadence is effectively abandoned, with the last publish being over 8 years ago and targeting Node.js versions as old as 0.4.7. Key differentiators include its design for human-friendliness and robustness, using 32 digits with case-insensitivity and aliases for easily confused characters (e.g., 'l' and 'I' for '1', 'o' for '0'). It notably excludes the character 'U' to avoid accidental obscenities. Instead of Crockford's suggested 'mod 37 checksum', this implementation incorporates a 3-bit parity checksum into the final character, enabling quick sanity checks without increasing length, but making it incompatible with other standard Base32 implementations. It is specifically designed for 32-bit numbers, though later additions (mentioned in the original README) hinted at support for up to 53-bit numbers with parity.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates encoding a 32-bit integer, decoding its case-insensitive and aliased variations, and shows how invalid inputs fail the parity check, resulting in `NaN`.

const { encode32, decode32 } = require('encode32');

const originalNumber = 123456772;
const encodedString = encode32(originalNumber);

console.log(`Original Number: ${originalNumber}`); // Expected: 123456772
console.log(`Encoded String: ${encodedString}`); // Expected: 0XDWT16

// Decoding various case/alias forms
const variations = [
  "0xdwt16", // lower case
  "oXDWTi6", // o for 0 and i for 1
  "OxDwtL6"  // O for 0 and L for 1
];

const decodedNumbers = variations.map(s => decode32(s));
console.log(`Decoded variations: ${decodedNumbers}`); // Expected: [123456772, 123456772, 123456772]

// Demonstrating parity check failure
const invalidInputs = [
  "0XDWT18", // incorrect final digit
  "X0DWT16", // transposed digits
  "0XDT16"   // missing digit
];

const invalidDecodes = invalidInputs.map(s => decode32(s));
console.log(`Invalid decodes (expect NaN): ${invalidDecodes}`); // Expected: [NaN, NaN, NaN]

view raw JSON →