Python中不均匀的36进制支持?

4 投票
3 回答
1808 浏览
提问于 2025-04-16 07:29

我最近在研究36进制的东西,但对把整数转换成36进制字符串的常见方法一直不太满意。感觉有点不太平衡……

def to_base36(value):
    if not isinstance(value, int):
        raise TypeError("expected int, got %s: %r" % (value.__class__.__name__, value))

    if value == 0:
        return "0"

    if value < 0:
        sign = "-"
        value = -value
    else:
        sign = ""

    result = []

    while value:
        value, mod = divmod(value, 36)
        result.append("0123456789abcdefghijklmnopqrstuvwxyz"[mod])

    return sign + "".join(reversed(result))

……和把它转换回去比起来……

def from_base36(value):
    return int(value, 36)

难道Python真的没有这个特定的功能吗?

3 个回答

1

继续这个比喻,那个大小的电池可能不在基本套餐里,但在网上找兼容的配件其实很简单:

http://code.activestate.com/recipes/365468-number-to-string-in-arbitrary-base/

8

你试过basin这个包吗?

>>> import basin
>>> basin.encode("0123456789abcdefghijklmnopqrstuvwxyz", 100)
'2s'

这个包本身没有自带很多功能,但pypi这个地方就像一个便利店,你可以很方便地去那里找你需要的功能,就像买电池一样简单。

4

没错,并不是每个商店都有N型J型电池。

撰写回答