使用 Python 将十进制转换为 base 64 的最有效方法

most efficient way to convert decimal to base 64 using Python

将十进制转换为 base 64(URL 友好)并返回的最有效方法是什么。

我当前的代码,

import numpy as np

a = "-0123456789ABCDEFGHIJKLM64OPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"
A = {k:i for i,k in enumerate(a)}


def dec_url(x:int, n:int=4):
    o = []
    for i in range(n):
        m = x%(64**(i+1))
        x -= m
        o.append(a[m//(64**i)])
    return ''.join(o[::-1])

def url_dec(s: str):
    return np.sum(map(lambda i:A.get(i[1])*(64**(i[0])),enumerate(s[::-1])))

有更好的方法来编码可变长度整数,因此仅用于教育目的:

from functools import reduce

def dec_url(x:int, n:int=4):
    o = []
    while x:
        x, m = divmod(x, 64)
        o.append(a[m])
    return ''.join(reversed(o))

def url_dec(s: str):
    return reduce((lambda total, char: (total << 6) + A[char]), s, 0)