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

Python: converting base 10 to base 36

我正在尝试将十进制转换为基数 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

在 Python 3 中,/ 运算符进行浮点除法,即使两个参数都是整数。这是对 Python 2 的更改,其中两个整数相除会舍弃小数部分。

您可以使用 // 运算符明确请求整数除法。结果将向负无穷大方向舍入。或者,由于您也在计算模数,您可以使用 divmod 同时获得它们:

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

你可以这样做:

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

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

但是它不会给你 base 36 的字母:而不是 'z' 它 returns 36.

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

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