我很久以前就开始研究这个问题,尝试编写自己的二进制到十进制转换器函数。我实际上不知道如何将十进制转换为二进制!我今天刚刚重新审视它并弄清楚了,这就是我想出的。我不确定这是否是您需要的,但它是:
def __degree(number):
power = 1
while number % (10**power) != number:
power += 1
return power
def __getDigits(number):
digits = []
degree = __degree(number)
for x in range(0, degree):
digits.append(int(((number % (10**(degree-x))) - (number % (10**(degree-x-1)))) / (10**(degree-x-1))))
return digits
def binaryToDecimal(number):
list = __getDigits(number)
decimalValue = 0
for x in range(0, len(list)):
if (list[x] is 1):
decimalValue += 2**(len(list) - x - 1)
return decimalValue
同样,我仍在自学 Python,希望这会有所帮助。第一个函数确定有多少位,第二个函数实际计算出它们是多少并将它们返回到一个列表中,第三个函数是您真正需要调用的唯一一个,它计算十进制值。如果您的老师真的希望您编写自己的转换器,这是可行的,我没有对每个数字都进行过测试,但它似乎工作得很好!我相信你们都会为我找到错误!所以无论如何,我只是这样称呼它:
binaryNum = int(input("Enter a binary number: "))
print(binaryToDecimal(binaryNum))
这将打印出正确的结果。干杯!