【问题标题】:how to convert binary to decimal using python without using the bin function如何在不使用 bin 函数的情况下使用 python 将二进制转换为十进制
【发布时间】:2014-05-26 01:51:00
【问题描述】:

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(number, 2)

标签: python binary decimal


【解决方案1】:

要将二进制转换为十进制,只需:

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

演示:

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

注意 - 您用于将十进制转换为二进制的代码存在许多问题。如果您坚持不为此使用内置函数,您可能会对这篇文章感兴趣:

Convert an integer to binary without using the built-in bin function

虽然我个人如果想避免使用bin() 函数,我会这样做:

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

演示:

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

这比您当前的代码更加 Pythonic。

【讨论】:

    【解决方案2】:

    这样会容易很多吗?

    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】:

      试试这个:

      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)
      

      【讨论】:

      • 请考虑编辑您的帖子,以添加更多关于您的代码的作用以及它为何能解决问题的说明。一个大部分只包含代码的答案(即使它正在工作)通常不会帮助 OP 理解他们的问题。如果只是猜测,还建议您不要发布答案。一个好的答案将有一个合理的理由说明它为什么可以解决 OP 的问题。
      猜你喜欢
      • 2021-12-27
      • 1970-01-01
      • 2010-12-05
      • 2019-03-22
      • 1970-01-01
      • 2015-06-09
      • 2019-07-10
      • 1970-01-01
      相关资源
      最近更新 更多