需求
需求:十进制转二进制,十进制除以2,直达商为0,余数反转,次序反转可以用栈实现
输入:一个十进制的数字
输出:转换后的数据
十进制转二进制
def shi_transform_er(consult):
# 十进制转换为二进制
s = []
while consult > 0:
remainder = consult % 2 # 余数
s.append(remainder) # 把余数添加到栈里面
consult = consult // 2
ret = ''.join([str(s.pop()) for i in range(len(s))])
return ret
print(shi_transform_er(21))
十进制转换为任意进制
def shi_transform_every(consult, base):
"""
通用:十进制转换为任意进制
:param consult: 十进制数据
:param base: 要转换成的进制
:return: 转换后结果
"""
t_dict = {
"10": "A",
"11": "B",
"12": "C",
"13": "D",
"14": "E",
"15": "F"
}
s = []
while consult > 0:
remainder = consult % base # 余数
if remainder > 9:
remainder = t_dict[str(remainder)]
s.append(remainder) # 把余数添加到栈里面
consult = consult // base
ret = ''.join([str(s.pop()) for i in range(len(s))])
return ret
print(shi_transform_every(100, 2))
print(shi_transform_every(100, 8))
print(shi_transform_every(100, 16))
print(shi_transform_every(31, 16))
# 测试结果
1100100
144
64
1F