python 中二进制格式的按位运算

Bitwise operations in binary format in python

我的程序有两个名为:IPMASK 的变量。这些变量包含二进制格式的数字,例如:IP = "11100001"MASK = "11000000".

我正在执行这样的 AND 操作: result = IP & MASK。 这应该给出:11000000,而不是 returns 10573888。 如何进行 AND 操作并保持十进制数字?

我环顾四周 whosebug.com 但我没有发现任何类似的情况,我唯一遇到的是手动执行此操作的 "algorithm"。

您输入的是十进制数字。位模式不是您所期望的:

>>> bin(11100001)
'0b101010010101111101100001'
>>> bin(11000000)
'0b101001111101100011000000'
>>> bin(11000000 & 11100001)
'0b101000010101100001000000'
>>> bin(10573888)
'0b101000010101100001000000'

要使用二进制数,请使用 0b 前缀:

>>> bin(0b11000000 & 0b11100001)
'0b11000000'
IP = 0b11100001
MASK = 0b11000000
Result = bin(IP and MASK)
print(Result)

Returns 0b11000000

前缀 0b 是表示数字为二进制格式的常用方法。同样,0x通常表示一个十六进制数。