把10进制数转成36进制数

1. 10进制与36进制

咱们从小学习的数字都是10进制的,天然而然的觉得这就是计数的惟一方法,直到接触2进制,才惊奇的发现原来还能够逢2进1。后来又接触了8进制,16进制,慢慢明白,这些都只是数值的一种表达形式,10进制更容易理解和使用,因此咱们平时使用10进制。在编程中,进制转换是很常见的操做,那么今天,就和你们一块儿来实现10进制到36进制的转换。python

在理解36进制以前,先回忆一下10进制,以321为例,小时候,老师是这样叫咱们的编程

   


百位        十位     个位
 3          2        1
 
 3*10*10    2*10     1*1
 
 300   +    20   +   1 = 321

数字在不一样的位上,所表明的数值是不同的,上面是10进制的321,若是321 是 36进制的,那么这个36进制的321对应的10进制数值是多少呢?微信

   


3          2       1
3*36*36    2*36    1*1
3888    +  72   +  1 = 3961

10进制是逢10进1,36进制是逢36进1, 因而咱们能够总结出一个公式,假设一个数值是AnAn-1 ... A2A1A0 它是m进制的,那么换算成10进制的方法以下app

An*mn  +  An-1*mn-1 ...  +  A2*m2   +  A1*m1 + A0*m0ide

m的0次方是1, 若是m是10,不正是咱们所熟悉的百位,十位,个位么!学习

python 10进制转为36进制

前面说到,36进制是逢36进1,但是一个位上,最大也就是9啊,怎么用一个位来表示比9大的数值呢,这个能够借鉴16进制的方法,用a来表示10, b来表示11, 那么在36进制中,z就表示35, z + 1 = 36, 逢36进1, 那么10进制的36用36进制表示的话就是10= 1*361 + 0*360  = 36 , 36进制的10 等于10进制的36。spa

36进制的10 转成 10进制的过程,就是一个逐位计算的过程,每一位的数值乘以这一位的1所对应的10进制数值,而后全部位对应的10进制相加。将10进制转成36进制的过程,就是上面这个过程的反向过程,36转10进制用乘法,10进制转36进制就用除法,下面以10进制数值3961 为例,向你演示转换为36进制的过程.net

第一步, 3961 除以 36 , 等于110 , 余 1 ,必定要把这个余数记住code

第二步, 110   除以 36 , 等于3 ,余 2orm

第三步, 3 除以 36 , 等于0, 余 3  

第三步,3除以36 ,结果是0, 当除法的结果是0时,就再也不进行转换了,接下来,把这3次除法所获得的余数倒序组合在一块儿正好是321, 这就是10进制数值 3961  转换成36进制的结果,用python代码处理方法以下

   



def base36_encode(number):
    num_str = '0123456789abcdefghijklmnopqrstuvwxyz'
    if number == 0:
        return '0'
 
 
    
    base36 = []
    while number != 0:
        number, i = divmod(number, 36)    # 返回 number// 36 , number%36
        base36.append(num_str[i])
 
 
    
    return ''.join(reversed(base36))
 
 
    
 
 
    
print(base36_encode(3961))

 


本文分享自微信公众号 - coolpython(coolpython)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索