Python 打印二进制值及其十进制形式

Python printing binary value and its decimal form

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()的打印语句中我应该怎么做才能将“0b10”的值打印为2.

print 0b10 给出 2。

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

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

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

The default base is 10. The allowed values are 0 and 2-36. Base-2, -8, and -16 literals can be optionally prefixed with 0b/0B, 0o/0O/0, or 0x/0X, as with integer literals in code.

使用 2 base parameter:

将字符串 0b10 转换回 int
def p_m(x):
    print int(x, 2)

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