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

时间:2016-08-07 10:56:42

标签: python python-2.7 binary decimal bits

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

print 0b10给出了2.

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

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

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

  

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

答案 2 :(得分:1)

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