我的程序有两个名为IP
和MASK
的变量。这些变量包含二进制格式的数字,例如:IP = "11100001"
和MASK = "11000000"
。
我正在执行AND
这样的操作:
result = IP & MASK
。
这应该给出:11000000
,而是返回10573888
。
如何进行AND
操作并将数字保留为十进制?
我查看了stackoverflow.com,但我没有发现任何类似的情况,我遇到的唯一事情是手动执行此操作的“算法”。
答案 0 :(得分:1)
您输入的是十进制数字。位模式不是您所期望的:
>>> bin(11100001)
'0b101010010101111101100001'
>>> bin(11000000)
'0b101001111101100011000000'
>>> bin(11000000 & 11100001)
'0b101000010101100001000000'
>>> bin(10573888)
'0b101000010101100001000000'
要使用二进制数,请使用0b
前缀:
>>> bin(0b11000000 & 0b11100001)
'0b11000000'
答案 1 :(得分:0)
IP = 0b11100001
MASK = 0b11000000
Result = bin(IP and MASK)
print(Result)
返回0b11000000
使用0b
进行预先修复是一种常见方式,表示数字是二进制格式。类似地,0x
通常表示十六进制数。