Skip to content

Instantly share code, notes, and snippets.

@selimnairb
Forked from marcg1968/base36.py
Last active June 25, 2020 02:36
Show Gist options
  • Save selimnairb/f4ea73add8fb7b4d81d1ccaa35dffea4 to your computer and use it in GitHub Desktop.
Save selimnairb/f4ea73add8fb7b4d81d1ccaa35dffea4 to your computer and use it in GitHub Desktop.
Python convert (encode/decode) base 36
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# http://stackoverflow.com/a/1181922
def base36encode(number, alphabet='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'):
"""Converts an integer to a base36 string."""
if not isinstance(number, int):
raise TypeError('number must be an integer')
base36 = ''
sign = ''
if number < 0:
sign = '-'
number = -number
if 0 <= number < len(alphabet):
return sign + alphabet[number]
while number != 0:
number, i = divmod(number, len(alphabet))
base36 = alphabet[i] + base36
return sign + base36
def base36decode(number):
return int(number, 36)
print base36encode(1412823931503067241)
print base36decode('AQF8AA0006EH')
@selimnairb
Copy link
Author

Python 3+ compatible

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment