0
我使用以下函數將int數轉換爲二進制。同時添加額外的零(16位)。但結果出現在二進制字符串中,當我在「按位向左移位和按位與運算符」的if語句中使用它時,會給我造成問題。Python將二進制字符串轉換爲二進制int
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
是否有任何簡單的解決方案這個?
你的意思是 - 'INT(binary_string,2)'(傳入基地)? –
嘗試'if(1024&(1 << 2)):',你的二進制方法是無用的。口罩與整數工作正常。整數_are_二進制畢竟... –
爲什麼即使顯式轉換爲二進制,如果你只是使用按位'&'反正呢?無論輸入格式如何,它始終在二進制位級別上工作。 – Zinki