创建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
2def baseConverter(decNumber,base):
3 digits = "0123456789ABCDEF" 4 5 remstack = Stack()
6 7while decNumber > 0:
8 rem = decNumber % base
9 remstack.push(rem)
10 decNumber = decNumber // base
1112 newString = ""13whilenot remstack.isEmpty():
14 newString = newString + digits[remstack.pop()]
1516return newString
原文:https://www.cnblogs.com/mtfan01/p/14443722.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!