我已经为我的4十六进制十六进制到十进制转换器编写了一个函数,虽然它有效但是有一个我无法弄清楚的语义错误。你能告诉我这个错误是什么吗?
def convert16_10(hexa):
den = 0
for i in range(4):
if hexa[i] == "A":
den += (16 ** 3-i) * 10
elif hexa[i] == "B":
den += (16 ** 3-i) *11
elif hexa[i] == "C":
den += (16 ** 3-i) * 12
elif hexa[i] == "D":
den += (16 ** 3-i) * 13
elif hexa[i] == "E":
den += (16 ** 3-i) * 14
elif hexa[i] == "F":
den += (16 ** 3-i) * 15
elif hexa[i] not in "ABCDEF":
den += (16 ** 3-i) * i
return den
答案 0 :(得分:0)
您可以使用以下代码进行简单转换:
i = int(hexa, 16)
答案 1 :(得分:0)
(16 ** 3-i)
的权力中使用括号。应该是(16 ** (3-i))
。* i
中的索引。应该是* int(hexa[i])
。解决方案:
def convert16_10(hexa):
den = 0
for i in range(4):
if hexa[i] == "A":
den += (16 ** (3-i)) * 10
elif hexa[i] == "B":
den += (16 ** (3-i)) *11
elif hexa[i] == "C":
den += (16 ** (3-i)) * 12
elif hexa[i] == "D":
den += (16 ** (3-i)) * 13
elif hexa[i] == "E":
den += (16 ** (3-i)) * 14
elif hexa[i] == "F":
den += (16 ** (3-i)) * 15
elif hexa[i] not in "ABCDEF":
den += (16 ** (3-i)) * int(hexa[i])
return den
print(convert16_10("007F")) # => 127