代码之家  ›  专栏  ›  技术社区  ›  Ben Blank Jarret Hardie

在python中不均匀的base-36支持?

  •  4
  • Ben Blank Jarret Hardie  · 技术社区  · 14 年前

    我最近一直在和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真的不包括这个特殊的电池吗?

    3 回复  |  直到 14 年前
        1
  •  4
  •   Ignacio Vazquez-Abrams    14 年前

    对的。不是每个商店都有 N J 电池。

        2
  •  8
  •   fmark    14 年前

    你试过了吗 basin 包裹?

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

    不包括电池,但是 pypi 储存库就像一个便利店,可以在最不麻烦的情况下提取电池。

        3
  •  1
  •   Ned Deily    14 年前

    为了继续进行类比,这种尺寸的电池可能不包括在基本组件中,但很容易在线购买与插头兼容的配件:

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