1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
import sys
__version__ = '0.1.1'
__all__ = ['dumps', 'loads']
if sys.version_info.major == 2: # pragma: no cover
integer_types = (int, long)
else: # pragma: no cover
integer_types = (int,)
alphabet = '0123456789abcdefghijklmnopqrstuvwxyz'
def dumps(number):
"""Dumps an integer into a base36 string.
:param number: the 10-based integer.
:returns: the base36 string.
"""
if not isinstance(number, integer_types):
raise TypeError('number must be an integer')
if number < 0:
return '-' + dumps(-number)
value = ''
while number != 0:
number, index = divmod(number, len(alphabet))
value = alphabet[index] + value
return value or '0'
def loads(value):
"""Loads a base36 string and parse it into 10-based integer.
:param value: the base36 string.
:returns: the parsed integer.
"""
return int(value, 36)
|