Python 3.x 在Python3中编写一个函数,将base 16转换为base 10

Python 3.x 在Python3中编写一个函数,将base 16转换为base 10,python-3.x,Python 3.x,有没有一种简单的方法来修改这段从base 2转换为base 10的代码,以便将base 16转换为base 10?我的目标是构建一个用于转换的专用函数,而不是使用任何内置Python特性进行计算。谢谢 BinaryVal = int(input('Enter:') DecVal = 0 for n in range(len(str(BinaryVal))): Power = len(str(BinX))-(n+1) DecVal += int(str(BinaryVal)[n])

有没有一种简单的方法来修改这段从base 2转换为base 10的代码,以便将base 16转换为base 10?我的目标是构建一个用于转换的专用函数,而不是使用任何内置Python特性进行计算。谢谢

BinaryVal = int(input('Enter:')
DecVal = 0
for n in range(len(str(BinaryVal))):
    Power = len(str(BinX))-(n+1)
    DecVal += int(str(BinaryVal)[n])*(2**Power)
print(DecVal)
哎呀

int
已经可以从任何基转换为10基-只需将其作为第二个参数提供即可

int('101010',2)
Out[64]: 42

int('2A',16)
Out[66]: 42

好吧,给你:

>>> binary_num = '101010'
>>> sum(int(b)*2**i for i, b in enumerate(reversed(binary_num)))
42

要将十六进制字符串转换为
int

>>> hexstr = '101010'
>>> int(hexstr, 16)
1052688
相同--没有
int
构造函数:

>>> import binascii 
>>> int.from_bytes(binascii.unhexlify(hexstr), 'big')
1052688
相同--类似于:

或:

这相当于:

def hex2int(hexstr):
    n = 0
    for h in hexstr.lower():
        n = n*16 + hex2dec[h]
    return n
例如:

>>> hex2int('101010')
1052688
作为替代方案,可以首先将所有数字转换为
int

>>> reduce(lambda n, d: n*16 + d, map(hex2dec.get, hexstr.lower()))
1052688

它会为空字符串引发
TypeError

我的目标是编写一个专用函数,而不是使用内置的Python功能。抱歉,没有说清楚。
42
(int对象)不是十进制的,它只是以这种方式打印的。请看,告诉我,您打算如何避免使用内置函数?在您的示例中,您使用了
int()
range()
len()
str()
。即使在您的示例中调用了
int()
,您也拒绝了roippi的回答。为什么要重新发明轮子,如果要,为什么要在这里问howto?我指的是内置的转换函数,比如hex(),可以为您进行转换。如果你想变得粗鲁,可以在其他地方做。OP想把基数16转换成基数10,而不是
2
>>> hex2int('101010')
1052688
>>> reduce(lambda n, d: n*16 + d, map(hex2dec.get, hexstr.lower()))
1052688