bas

bases

Utility for converting numbers to/from different bases/alphabets.

Showing:

Popularity

Downloads/wk

5K

GitHub Stars

38

Maintenance

Last Commit

7yrs ago

Contributors

3

Package

Dependencies

0

Size (min+gzip)

0.6KB

License

Type Definitions

Tree-Shakeable

No?

Categories

Readme

Build Status

bases.js

Utility for converting numbers to/from different bases/alphabets. Common bases have convenience aliases (see below), but arbitrary/custom alphabets can be used.

Installation

On the server side w/ Node.js:

npm install bases

Or in the browser (adds a global Bases variable for now):

<script src="bases.js"></script>

Usage

var bases = require('./bases');
  // or window.Bases in the browser

bases.toBase16(200);                // => 'c8'
bases.toBase62(99999);              // => 'q0T'
bases.toAlphabet(300, 'aAbBcC');    // => 'Abba'

bases.fromBase16('c8');               // => 200
bases.fromBase62('q0T');              // => 99999
bases.fromAlphabet('Abba', 'aAbBcC'); // => 300

API

Going from numbers to strings:

  • toAlphabet(num, alphabet): returns a string representation of the given number for the given alphabet, where the alphabet is an arbitrary string of characters. (See known alphabets below for examples.)

  • toBase(num, base): convenience helper for known bases (see below).

  • toBaseX(num): convenience helpers for known bases (see below), e.g. toBase62(num).

Going from strings to numbers:

  • fromAlphabet(str, alphabet): returns an integer representation of the given string for the given alphabet.

  • fromBase(num, base): convenience helper for known bases.

  • fromBaseX(str): convenience helpers for known bases.

Known Bases/Alphabets

Numbers only:

Base-2 01
... 012...
Base-10 0123456789

Letters only:

Base-26 abcdefghijklmnopqrstuvwxyz
Base-52 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

Alphanumeric:

Base-11 0123456789a
... 0123456789ab...
Base-16 0123456789abcdef
Base-36 0123456789abcdefghijklmnopqrstuvwxyz
Base-62 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

Human-friendly:

Base-32 (from Douglas Crockford) 0123456789ABCDEFGHJKMNPQRSTVWXYZ (no IOLU)
Base-58 (from Flickr) 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ (no 0lIO)

Other:

Base-64 (as standardized) ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

Base-64 warning: besides there being several different standards, padding isn't currently added and line lengths aren't tracked. Not recommended for use with APIs that expect formal base-64 strings!

License

MIT license. (c) 2012-2014 Aseem Kishore and contributors.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial