我使用以下函数将int数转换为二进制数。同时添加额外的零(16位)。但结果来自二进制字符串,当我在if语句中使用"按位左移和按位AND运算符"时,会给我带来问题。
def binary(num, length=16):
return format(num, '#0{}b'.format(length + 2))
上下文中使用的函数:
if (binary(1024) & (1<<2)):
print "Bit 2 is SET"
但是请收到以下错误消息:
Traceback (most recent call last):
File "log.py", line 209, in <module>
if (binary(1024) & (1<<2)):
TypeError: unsupported operand type(s) for &: 'str' and 'int'
简单解释:
"0b0000010000000000" to be: 0b0000010000000000
对此有任何简单的解决方案吗?
答案 0 :(得分:0)
当你在数字上使用任何按位运算符时,它会自动应用它,因为我们通常可视化对二进制值执行的操作。
在你的情况下,你可以简单地首先将字符串转换为整数然后如果你想要你也可以使用bin( )
函数获得相同数字的二进制表示,该函数在二进制表示中返回一个字符串。
以下是代码: -
numstring = "15"
num_in_base_10 = int(numstring)
string_in_binary_form = bin(num_in_base10)
#If you dont want the 0b prefix of the binary repr , you can simple do ,
string_in_binary_form.replace('0b','') which would return the string without 0b prefix.