我已经编写了下面的 python 脚本来将十六进制转换为十进制。 它似乎工作正常,至少只要十六进制少于 8 个字符。
我做错了什么?谢谢!
""" converts hexidecimal to decimal"""
def HextoDec (string):
ret = 0
for i in string :
hex = "0123456789ABCDEF"
value= hex.index(i) # 0 to 15
index = string.index(i)
power = (len(string) -(index+1)) #power of 16
ret += (value*16**power)
return ret
print(HextoDec("BAABFC7DE"))
最佳答案
问题是这一行:
index = string.index(i)
index()
返回第一个 匹配项的位置。如果十六进制数包含任何重复字符,您将得到所有重复项的错误索引。
无需搜索索引,而是在迭代时直接获取它:
for index, i in enumerate(string):
关于将十六进制转换为十进制的Python脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49078789/