簡體   English   中英

如何在不使用bin函數的情況下使用python將二進制轉換為十進制

[英]how to convert binary to decimal using python without using the bin function

iv做了一個十進制到二進制的轉換器,但是我需要一個不使用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))

要將二進制轉換為十進制,只需執行以下操作:

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'

這比您當前的代碼更具Pythonic性。

這會容易得多,不是嗎?

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)

嘗試這個:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM