为了回答另一篇关于IP地址和网络掩码的文章,我陷入了简单的按位运算的困境。
在Python中,是否有一种标准的方法来执行按位和(或)异或(或)运算,而不是假设输入是“32位”(可能是负)整数或长整数,并且结果必须是[0,2**32]范围内的长整数?
换句话说,我需要一个工作的Python对应于无符号long之间的C位操作。
编辑:具体问题是:
>>> m = 0xFFFFFF00 # netmask 255.255.255.0
>>> ~m
-4294967041L # wtf?! I want 255
Tags:
您可以使用ctypes及其
c_uint32
:所以我在这里做的是将
~m
强制转换为一个C 32位无符号整数,并以Python格式检索其值。您可以通过
0xFFFFFFFF
来屏蔽所有内容:相关问题 更多 >
编程相关推荐