问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
方法1
知识点:1:ord(i)函数,将字母i转化为它所对应的ASCII码的数值
2: A.isdigit()函数,判断是否只由数字组成
3: A.isalpha()函数,判断是否只由字母组成
思路:对所输入的一串数字进行遍历,然后判断是数字还是字母。如果是字母的话,将它转换为所对应的数字。同时对它这个数字进行幂的运算。
while True:
try:
a=input()
s=0
for i in range(len(a)):
if a[i].isdigit():
s=s+(ord(a[i])-ord('0'))*pow(16,len(a)-i-1)
elif a[i].isalpha():
s=s+(ord(a[i])-ord('A')+10)*pow(16,len(a)-i-1)
print(s)
except:
break
方法2
思路:用条件语句将每一种可能的情况列出来,然后放入列表中。
while True:
try:
#十六进制转十进制
n = input()
sum = 0
j = 1
for i in n:
if i <= str(9):
num = i
elif i == 'A':
num = 10
elif i == 'B':
num = 11
elif i == 'C':
num = 12
elif i == 'D':
num = 13
elif i == 'E':
num = 14
elif i == 'F':
num = 15
sum = sum + int(num)*(16**(len(n)-j))
j = j+1
print(sum)
except:
break