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

前端 未结 27 3756
清歌不尽
清歌不尽 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:54

    def dec_to_radix(input, to_radix=2, power=None):
        if not isinstance(input, int):
            raise TypeError('Not an integer!')
        elif power is None:
            power = 1
    
        if input == 0:
            return 0
        else:
            remainder = input % to_radix**power
            digit = str(int(remainder/to_radix**(power-1)))
            return int(str(dec_to_radix(input-remainder, to_radix, power+1)) + digit)
    
    def radix_to_dec(input, from_radix):
        if not isinstance(input, int):
            raise TypeError('Not an integer!')
        return sum(int(digit)*(from_radix**power) for power, digit in enumerate(str(input)[::-1]))
    
    def radix_to_radix(input, from_radix=10, to_radix=2, power=None):
        dec = radix_to_dec(input, from_radix)
        return dec_to_radix(dec, to_radix, power)
    

提交回复
热议问题