如何在Python中不使用bin函数将二进制转为十进制

2 投票
3 回答
18644 浏览
提问于 2025-04-18 02:24

我做了一个十进制转二进制的转换器,但我需要一个二进制转十进制的转换器,而且不想用bin这个函数。这个需求看起来很简单,能有人帮帮我吗?

choice=input('Please enter b for a binary to decimal conversion or d for a decimal to binary conversion:\n')
if choice == 'd':
decimalNum=int(input('Please enter a decimal number:\n'))

bit8=0
bit7=0
bit6=0
bit5=0
bit4=0
bit3=0
bit2=0
bit1=0
bit8=decimalNum%2
decimalNum=decimalNum//2
bit7=decimalNum%2
decimalNum=decimalNum//2
bit6=decimalNum%2
decimalNum=decimalNum//2
bit5=decimalNum%2
decimalNum=decimalNum//2
bit4=decimalNum%2
decimalNum=decimalNum//2
bit3=decimalNum%2
decimalNum=decimalNum//2
bit2=decimalNum%2
decimalNum=decimalNum//2
bit1=decimalNum%2
decimalNum=decimalNum//2

print(str(bit1)+str(bit2)+str(bit3)+str(bit4)+str(bit5)+str(bit6)+str(bit7)+str(bit7))

3 个回答

0

试试这个:

from __future__ import print_function
def binary(n):
    i = 0
    sum = 0
    while n > 0 :
        num = n % 10
        n= n//10
        sum = sum + (2**i) * num
        i+=1
    print(sum)
# Take decimal number from user
dec = int(input("Enter decimal: "))
binary(dec)
1

这样做不是简单多了吗?

conv = str(input('what do you want to convert?'))
if conv == 'binary':
    x = str(input('enter binary : '))
    ansBin = int(x, 2)
    print('decimal for binary ', x, ' is ', ansBin)
elif conv == 'decimal':
    y = int(input('enter decimal : '))
    ansDec = bin(y)[2:]
    print('binary for decimal ', y, ' is ', ansDec)
3

要把二进制转换成十进制,只需要这样做:

int(binary_string, 2)  # The 2 is the base argument from which we convert.

示例:

>>> int('0b10110', 2)
22

注意:你用来把十进制转换成二进制的代码有很多问题。如果你坚持不想使用内置函数来实现这个功能,你可能会对这篇帖子感兴趣:

不使用内置的bin函数将整数转换为二进制

不过如果是我想避免使用bin()函数,我会这样做:

"{0:#b}".format(an_integer)

示例:

>>> "{0:#b}".format(22)
'0b10110'

这比你现在的代码更符合Python的风格。

撰写回答