将十六进制转换为十进制的Python脚本

2024-06-26 14:49:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编写了下面的python脚本来将十六进制转换为十进制。 它似乎可以正常工作,至少只要十六进制少于8个字符。在

我做错什么了?Tnx!在

""" 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"))  

Tags: to脚本stringindexvaluedefdecimalpower
3条回答

有一种不使用自定义函数将十六进制转换为十进制的更简单的方法-只需使用内置的int()函数,如下所示:

int("BAABFC7DE", base=16) #replace BAABFC7DE with any hex code you want

但是如果您确实想使用自定义函数,那么Barmar的答案是最好的。在

正如巴尔玛指出的那样。发出的是行

index = string.index(i)

返回第一个匹配项。试试这个:

def HextoDec (string):
    ret = 0
    for i,d in enumerate(string) : 
        hex = "0123456789ABCDEF"
        value= hex.index(d) # 0 to 15
        #index = string.index(i)
        power = (len(string) -(i+1)) #power of 16
        ret += (value*16**power)
    return ret

问题是这条线:

index = string.index(i)

index()返回第一个匹配项的位置。如果十六进制数包含任何重复字符,则所有重复的索引都将错误。在

不要搜索索引,而是在迭代时直接获取索引:

^{pr2}$

相关问题 更多 >