python十進制數轉換成任意進制數


  創建baseConverter行數接受一個進制數和2~16的基數作為參數,處理方式是將余數壓入棧中,知道被處理的值為0.以2~10為基

數時,最多只需要10個數字,因此0~9這10個整數夠用。當基數超過10時,就會遇到問題。不能再直接使用余數,這是因為余數本身

就是兩位的十進制數。因此,需要創建一套數字來表示大於9的余數。  

  一種解決方法是添加一些字母字符到數字中,例如,十六進制使用10個數字以及前6個字母來代表16位數字。在代碼中,為了實

現這一方法,第3行創建了一個數字字符串來存儲對應位置上的數字。0在位置0,1在位置1,A在位置10,B在位置11,依次類推。當

從棧中移除一個余數時,它可以被用作訪問數字下標,對應的數字會被添加到結果中。如果從棧中移除的余數是13,那么字母D將被

添加到結果字符串的最后。

 

 1 from pythonds.basic import Stack
 2 def baseConverter(decNumber,base):
 3     digits = "0123456789ABCDEF"
 4 
 5     remstack = Stack()
 6 
 7     while decNumber > 0:
 8         rem = decNumber % base
 9         remstack.push(rem)
10         decNumber = decNumber // base
11 
12     newString = ""
13     while not remstack.isEmpty():
14         newString = newString + digits[remstack.pop()]
15 
16     return newString

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM