使用Python将小数转换为64的最有效方法

发布于 2025-01-22 03:01:34 字数 467 浏览 5 评论 0原文

将小数转化为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])))

What is the most efficient way to convert decimal into base 64 (URL friendly) and back.

My current code,

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])))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奢欲 2025-01-29 03:01:34

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

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)

There are better methods to encode a variable length integer, so for education purposes only:

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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文