华为机试HJ5进制转换
题目:
将十六进制的数转换为十进制的数
想法:
将输入的十六进制的数去除前缀0x后,按位置进行计算十进制数字(计算公式见代码),并将每个位置上得到数值累加,最终获得转换后的十进制数。
input_number = input()
# 用字典表示出十六进制数中用字母表示的数
number_dict = {"A": 10, "B": 11, "C": 12, "D": 13, "E": 14, "F": 15}
# 去除十六进制的前缀符号
input_number = input_number.replace("0x", "")
number = 0
for i in range(len(input_number)):
if input_number[i] in number_dict:
single_number = number_dict[input_number[i]]
else:
single_number = int(input_number[i])
number += single_number * (16 ** (len(input_number) - i - 1)) # 计算每个位置上的十六进制转十进制
print(number)