用栈实现进制转换
这种题也是考点之一,记录一下。
##思路:
- 对该数进行进制取余,余数进栈;
- 将余数视为col的下标,该下标对应的值即为进制转换结果。这样做是为了保证在进行十转十六进制时字母的问题。
python实现
class Stack:
def __init__(self):
self.data = []
def is_empty(self):
return len(self.data) == 0
def top(self):
if self.is_empty():
return False
else:
return self.data[-1]
def push(self,e):
return self.data.append(e)
def pop(self):
if self.is_empty():
return False
else:
return self.data.pop()
def ten_con(num,th):
rem = Stack()
#参考别人思路 先建立一个对应的16进制值表 因为余数超过10,16进制中就要用字母表示
#这里用余数作为下标取出coll中对应的值再输出即可
col = "0123456789ABCDEF"
while num > 0:
remainder = num % th
rem.push(remainder)
num = num // th
while not rem.is_empty():
print(col[rem.pop()],end='')