Python中基础36支持不均匀?

时间:2010-11-23 05:26:27

标签: python base36

我最近一直在使用base-36,并且从未对将{int}转换为base-36字符串的the usual answer感到满意。它看起来有点不平衡......

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 个答案:

答案 0 :(得分:8)

您是否尝试过basin套餐?

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

这不是电池,但pypi存储库就像一个便利店,可以轻松拿起电池。

答案 1 :(得分:4)

正确。并非每家商店都有NJ电池。

答案 2 :(得分:1)

继续这个比喻,基本套装可能不包含那么大小的电池,但是很容易在线购买插头兼容配件:

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