没有为此的标准模块,但是我编写了自己的函数来实现这一点。
base62 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"def enpre(num, alphabet): """Enpre a positive number into base X and return the string. Arguments: - `num`: The number to enpre - `alphabet`: The alphabet to use for encoding """ if num == 0: return alphabet[0] arr = [] arr_append = arr.append # Extract bound-method for faster access. _divmod = divmod # Access to locals is faster. base = len(alphabet) while num: num, rem = _divmod(num, base) arr_append(alphabet[rem]) arr.reverse() return ''.join(arr)def depre(string, alphabet=base62): """Depre a base X enpred string into the number Arguments: - `string`: The enpred string - `alphabet`: The alphabet to use for decoding """ base = len(alphabet) strlen = len(string) num = 0 idx = 0 for char in string: power = (strlen - (idx + 1)) num += alphabet.index(char) * (base ** power) idx += 1 return num
请注意,您可以给它提供任何字母以用于编码和解码的事实。如果您忽略该
alphabet参数,则将获得在第一行代码中定义的62个字符的字母,从而对62个基数进行编码/解码。
希望这可以帮助。
PS-对于URL缩短器,我发现最好省略一些容易混淆的字符,例如0Ol1oI等。因此,我可以使用此字母满足URL缩短的需要-
"23456789abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"
玩得开心。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)