将基数为10的数字转换为不带字符串的任何基数

时间:2017-12-11 21:14:21

标签: python radix

我试图创建一个函数,它接受基数为10的数字,并且可以从2到9更改为任何基数。我试图仅使用math模块而只是一些简单的数学。

我的代码涉及字符串,我想消除它们,而是让函数做一些数学而不是使用字符串中的数字。我也试图使输出整数。

def conver(n,b):
    digits = ('0123456789')
    ans = ""
    while n > 0:
        ans = digits[n%b] + ans
        n //= b
    return ans

例如,用户可以输入值(14,2)并获得输出1110

1 个答案:

答案 0 :(得分:0)

一个简单的实现,可以"转换"基数为9,如下:

def conver(n,b):
    a = 0
    i = 0
    while n:
        n,r = divmod(n,b)
        a += 10**i * r
        i += 1

    return a

请注意n,r = divmod(n,b)可以是r = n % b; n //= b

请注意,您获得的数字是一个整数(作为一种类型),但使用它是没有意义的,因为基数是错误的:Ex:1110不是真的{ {1}}。所以它与字符串没有什么不同......

嗯,那只是为了练习。