【问题标题】:Uneven base-36 support in Python?Python 中的 base-36 支持不均匀?
【发布时间】:2010-11-23 05:26:27
【问题描述】:

我最近一直在使用 base-36,但从未对 the usual answer 将 int 转换为 base-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 真的不包括这个特殊的电池吗?

【问题讨论】:

    标签: python base36


    【解决方案1】:

    您尝试过basin 包吗?

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

    不包括电池,但pypi 存储库就像一个便利店,可以毫不费力地拿起电池。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • +1,base 36 是相当不寻常的,所以在标准库中包含它只会增加膨胀
      • @Rafe — 对我来说,它不是特别是 base36,但 Python 支持将 任意基转换,但不支持 to 它们。跨度>
      • Rafe:但这显然不是那么不寻常,也不是那么糟糕,需要从int() 中删除!
      • 标准 C 具有相同的不对称性。
      • ... 这可能是解释为什么 Python 也具有不对称性的一个重要线索——原始字符串格式可能取决于底层 C 库。
      【解决方案3】:

      继续进行类比,基本包装中可能不包含该尺寸的电池,但在网上购买插头兼容的配件很容易:

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

      【讨论】:

      • 呵呵,我更喜欢你的比喻:)
      猜你喜欢
      • 2010-11-13
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多