一、10进制转其他进制:除n反向取余
以10进制(31和181)转16进制为例:
二、其他进制转10进制:乘权累加法
#10进制转 其他进制 2 4 8 16
def tenToOther(number,jz):
#除n反向取余
result =[]
num = number
chars = {10:"a",11:"b",12:"c",13:"d",14:"e",15:"f"}
while True:
if num==0:
break
yu = num%jz
num = num//jz
if yu>9:
yu =chars[yu]
result.append(str(yu))
#反向
result = result[::-1]
res ="".join(result)
print("十进制{}转换为{}进制{}".format(number,jz,res))
#其他进制 2 4 8 16 转10进制
def toTen(number):
jz =int(input("请输入需要将几进制转换为10进制"))
#乘权累加
#将数字反转,将索引和指数对应
reverseNum = number[::-1]
res = 0
chars = {"a":10,"b":11,"c":12,"d":13,"e":14,"f":15}
for i in range(len(reverseNum)):
if reverseNum[i] in chars:
n = chars[reverseNum[i]]
else:
n = int(reverseNum[i])
res+=n*jz**i
print("{}进制{}转换为十进制的结果是{}".format(jz,number,res))
tenToOther(31,4)
toTen("b5")