把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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索