Hey Guys Exciting News I have finally added bases.py to pip.

I recently got together with a friend who helped my put my python library bases.py on pip.

What does this mean for you programmers who write in python? Well it means that we will no longer have to use and import multiple libraries to convert bases.

As most people have noticed pythons int() only supports one way base conversions. int('lol',36) // => 28101. Pythons format() also only supports conversion the other way up to base 16. This library was created to help those python programmers by providing a bases conversion system that works both ways, can use customized conversions and supports from base 2 all the way up to base 64 all in one library.

I hope everyone enjoys this library especially now that it can be installed with pip.

If you feel like using it then give it a spin.


pip install bases.py  


from bases import Bases  
bases = Bases()

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  


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


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


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


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!


MIT license. (c) 2015-2016 Belldandu and contributors.

Other Notes

You can also find the source code for this project at Github