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 。
答案 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