# 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.

## Installation

```
pip install bases.py
```

## Usage

```
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
```

## 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) 2015-2016 Belldandu and contributors.

## Other Notes

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