问题:编程实现将一个N进制数转换成M进制数。(c/c++、Java、Javascript、C#、Python)
1、Python 手写算法版
def conversion_num(num, src, dest):
rtn = ''
# 1、校验源和目标是否相同
if src == dest:
rtn = num
# 2、转成10进制#
if src != 10:
num_str = str(num)
num_str = num_str[::-1]
exe_num = 0
dec_num = 0
for num_char in num_str:
# 十六进制处理
if num_char == 'A':
num_char = ''
elif num_char == 'B':
num_char = ''
elif num_char == 'C':
num_char = ''
elif num_char == 'D':
num_char = ''
elif num_char == 'E':
num_char = ''
elif num_char == 'F':
num_char = '' num_int = int(num_char)
if exe_num == 0:
dec_num += num_int
else:
dec_num += src ** exe_num * num_int
exe_num += 1
num = dec_num
# 3、转成目标进制
if dest == 10:
rtn = num
else:
num = int(num)
while True:
divisor = num // dest
remainder = num % dest
# 十六进制处理
if remainder == 10:
remainder = 'A'
elif remainder == 11:
remainder = 'B'
elif remainder == 12:
remainder = 'C'
elif remainder == 13:
remainder = 'D'
elif remainder == 14:
remainder = 'E'
elif remainder == 15:
remainder = 'F'
rtn = str(remainder) + rtn
if divisor <= 0:
break
else:
num = divisor
# 4、处理空的字符串
if rtn == '':
rtn = ''
return rtn new_num = conversion_num('', 2, 16)
print(new_num)
2、python内部方法版:
def conversion_num(num, src, dest):
rtn = ''
# 1、校验源和目标是否相同
if src == dest:
rtn = num
# 2、转成10进制#
if src != 10:
dec_num = 0
if src == 2:
dec_num = int(num, 2)
elif src == 8:
dec_num = int(num, 8)
elif src == 16:
dec_num = int(num, 16)
num = dec_num
# 3、转成目标进制
if dest == 10:
rtn = num
else:
if dest == 2:
rtn = bin(num)
elif dest == 8:
rtn = oct(num)
elif dest == 16:
rtn = hex(num)
# 4、处理空的字符串
if rtn == '':
rtn = ''
return rtn new_num = conversion_num('', 2, 16)
print(new_num)
3、