Base 62转换

Base 62转换,第1张

Base 62转换

没有为此的标准模块,但是我编写了自己的函数来实现这一点。

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"

玩得开心。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5646078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存