python base,python-Base 62转换

没有标准的模块,但我已经写了我自己的功能来实现。

BASE62 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

def encode(num, alphabet=BASE62):

"""Encode a positive number in Base X

Arguments:

- `num`: The number to encode

- `alphabet`: The alphabet to use for encoding

"""

if num == 0:

return alphabet[0]

arr = []

base = len(alphabet)

while num:

num, rem = divmod(num, base)

arr.append(alphabet[rem])

arr.reverse()

return ''.join(arr)

def decode(string, alphabet=BASE62):

"""Decode a Base X encoded string into the number

Arguments:

- `string`: The encoded string

- `alphabet`: The alphabet to use for encoding

"""

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

请注意,您可以给它任何字母表以用于编码和解码。如果你离开字母表参数,你将得到在第一行代码定义的62字符字母表,因此编码/解码到/从62基。

希望这可以帮助。

PS – 对于URL缩短器,我发现最好省略一些令人困惑的字符,如OllOI等。因此,我使用这个字母表为我的URL缩短需要 – “23456789abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ”

玩的开心。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值