How to convert an integer to a string in any base?

前端 未结 27 3689
清歌不尽
清歌不尽 2020-11-22 02:25

Python allows easy creation of an integer from a string of a given base via

int(str, base). 

I want to perform the inverse: creati

27条回答
  •  滥情空心
    2020-11-22 02:48

    If you need compatibility with ancient versions of Python, you can either use gmpy (which does include a fast, completely general int-to-string conversion function, and can be built for such ancient versions -- you may need to try older releases since the recent ones have not been tested for venerable Python and GMP releases, only somewhat recent ones), or, for less speed but more convenience, use Python code -- e.g., most simply:

    import string
    digs = string.digits + string.ascii_letters
    
    
    def int2base(x, base):
        if x < 0:
            sign = -1
        elif x == 0:
            return digs[0]
        else:
            sign = 1
    
        x *= sign
        digits = []
    
        while x:
            digits.append(digs[int(x % base)])
            x = int(x / base)
    
        if sign < 0:
            digits.append('-')
    
        digits.reverse()
    
        return ''.join(digits)
    

提交回复
热议问题