Python:将基数10转换为基数36

时间:2015-10-15 03:32:47

标签: python base36

我正在尝试将十进制转换为基数36(... 8,9,a,b,c ... x,y,z,10,11 ......)但是当我运行我的代码时,我得到了一堆花车而不是整数。

def trc(n):
    if (n < 0): print(0, end='')
    elif (n<=1): print(n, end='')
    else:
        trc( n / 36 )
        x =(n%36)
        if (x < 10): print(x, end='')
        else: print(chr(x+87), end='')

我将此代码基于this

2 个答案:

答案 0 :(得分:1)

在Python 3中,/运算符执行浮点除法,即使两个参数都是整数。这是Python 2的变化,其中除以两个整数将丢弃小数部分。

您可以使用//运算符明确请求整数除法。结果将向负无穷大四舍五入。或者,既然您还计算了模数,您可以使用divmod同时获取它们:

else:
    n, x = divmod(n, 36)
    trc(n)
    if x < 10: # ...

答案 1 :(得分:-1)

你可以这样做:

def trc(n):
    return(int(str(n), base = 36))

然后用 print(trc(x)) 得到以 36 为基数的 x。这个解决方案适用于任何基数。

但是它不会给你以 36 为底的字母:它返回 36 而不是 'z'。

您需要为此制作一个单独的程序。

在大多数情况下它应该足够好,除非您使用像 excel 这样需要字母的东西。