tags:

views:

357

answers:

2

Hi, how can I encode an integer with Base 36 in Python and then decode it again?

Thanks, Max

+4  A: 

Have you tried Wikipedias sample code?

kanngard
Yeh thanks :D! I should have read it...
mistero
+4  A: 

Damn I wish I had read this before. Here is the answer:

def base36encode(number):
    if not isinstance(number, (int, long)):
        raise TypeError('number must be an integer')
    if number < 0:
        raise ValueError('number must be positive')

    alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'

    base36 = ''
    while number:
        number, i = divmod(number, 36)
        base36 = alphabet[i] + base36

    return base36 or alphabet[0]

def base36decode(number):
    return int(number,36)

print base36encode(1412823931503067241)
print base36decode('AQF8AA0006EH')

Sorry guys and thanks, Max

mistero