python 2.7
你如何获取任何数字并能够将其压缩为小写字母和数字?你如何获取结果字符串并将其放回到数字?
对每个3个数字块执行chr()之类的操作是行不通的,因为如果数字块大于255,则会抛出错误,我只想要小写数字和字母.
编辑:
它的主要目的是压缩一个数字.用户将看到这个并将输入,因此它需要很容易打字(不能有ascii支持但不在标准键盘上的奇怪字符)
使用base 36,下面是您可以在Wikipedia上找到的Python实现的改编版本:
def base36encode(number, alphabet='0123456789abcdefghijklmnopqrstuvwxyz'):
"""Converts an integer to a base36 string."""
if not isinstance(number, (int, long)):
raise TypeError('number must be an integer')
base36 = '' if number != 0 else '0'
sign = ''
if number < 0:
sign = '-'
number = -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)
aqf8aa0006eh
>>> print base36decode('aqf8aa0006eh')
1412823931503067241
Run Code Online (Sandbox Code Playgroud)