【问题标题】:Python printing binary value and its decimal formPython打印二进制值及其十进制形式
【发布时间】:2016-12-13 07:06:39
【问题描述】:

Python 2.6/2.7

我有以下程序。

print 0b10

def p_m(x):
    print x

p_m(bin(2))

输出:

2
0b10

我想在 p_m() 中打印的是“0b10”的 2(十进制值),这是我作为第一个参数传递给 p_m() 并在变量 x 中获取此值“0b10”并打印那个 x。

为什么函数内部的print x 不像程序的第一行那样工作?

在 p_m() 的 print 语句中我应该怎么做才能将 "0b10" 的值打印为 2

【问题讨论】:

  • 0b10 是一个intbin(2)'0b10',它是一个字符串。您必须 print int('0b10', 2) 才能打印 2
  • @M.Klugerford 谢谢。没有检查 int() 是否可以将基值作为 2 传递。谢谢。如果你能回答,我会标记它。顺便说一句,给 print int(x,10) 不起作用,我猜是因为 0b10 不是基数为 10(小数)的有效值。

标签: python python-2.7 binary decimal bits


【解决方案1】:

0b10 是一个整数。 bin(2) 是 '0b10',它是一个字符串。您必须打印 int('0b10', 2) 才能打印 2

【讨论】:

    【解决方案2】:

    使用2 base parameter将字符串0b10转换回int:

    def p_m(x):
        print int(x, 2)
    

    【讨论】:

      【解决方案3】:

      print 0b10 给出 2。

      这是因为所有数字都以二进制形式存储在 python 中。

      bin(2) 是一个字符串。所以它给你二进制值。

      您可以使用print int('0b10', 2)。这里 2 表示基数,“0b10”是您要转换的二进制文件。 0b 的一部分 0b10 不是强制性的,因为 int() 已经知道它将其转换为基数 2。Documentation 说,

      默认基数为 10。允许的值为 0 和 2-36。基数 2,-8, 和 -16 字面值可以选择以 0b/0B、0o/0O/0 或 0x/0X,与代码中的整数文字一样。

      【讨论】:

      • 这两行有没有区别。 1:打印 int("0b100",2) 和 2:打印 int("100",2)。它们都打印十进制数字 4。 Int() 第一个参数是一个字符串,第二个参数是一个基数 (2),所以在这种情况下,它认为字符串值:0b100 和 100 都是相同的,但是当我们将它作为字符串处理时会令人困惑。
      猜你喜欢
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 2020-05-14
      • 2013-03-31
      • 2020-03-11
      • 2018-08-30
      • 1970-01-01
      • 2020-03-31
      相关资源
      最近更新 更多