我正在研究一个函数,它检查二进制文件中右边第四位是否有效。
这是我的代码:
bit2= 0b1000
entry = bin(int(raw_input("Type a number : ")))
def verifier_bit4(entry):
if entry & bit2 > 0 :
return "on"
else:
return "off"
print verifier_bit4(entry)
如果将条目的值定义为二进制(例如:entry = 0b1001),它工作正常。
但是我决定让用户更友好,并要求用户输入raw_input()
的号码。
然后我收到此错误消息:
回溯(最近一次调用最后一次):文件“python”,第11行,在中 文件“python”,第6行,在verifier_bit4中TypeError:
的不受支持的操作数类型
&:'str'和'int'
我检查了变量'entry',它确实是一个二进制文件,所以我不明白为什么我的代码不起作用。
有人帮忙吗? :)
答案 0 :(得分:3)
实际上bin
以二进制形式返回数字的字符串表示形式:
>>> bin(123)
'0b1111011'
您可以删除该bin
来电,因为您可能还想在此处使用int
。
答案 1 :(得分:1)
对于按位操作数,您不需要二进制文件:
>>> 32 & 8
0
>>> 12 & 8
8
它们是在整数上定义的:
bit2 = 0b1000
entry = int(raw_input("Type a number : "))
def verifier_bit4(entry):
if entry & bit2 > 0 :
return "on"
else:
return "off"
print verifier_bit4(entry)
答案 2 :(得分:-1)
如果您想让用户在二进制表示中输入数字,您必须告诉int()
:
entry = int(raw_input("Type a number : "), 2)
然后输入就像0b0010
一样。