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
原文地址:https://www.cnblogs.com/mtfan01/p/14443722.html