当前位置:  开发笔记 > 编程语言 > 正文

Python:无符号32位逐位算术

如何解决《Python:无符号32位逐位算术》经验,为你挑选了3个好方法。

试图回答其解决方案涉及IP地址和网络掩码的另一篇文章,我陷入了简单的按位运算.

在Python中是否有一种标准方法可以进行按位AND,OR,XOR,NOT操作,假设输入为"32位"(可能为负)整数或长整数,并且结果必须在范围内为长[ 0,2**32]?

换句话说,我需要一个有效的Python对应于无符号长整数之间的C位运算.

编辑:具体问题是:

>>> m = 0xFFFFFF00   # netmask 255.255.255.0
>>> ~m
-4294967041L         # wtf?! I want 255

DzinX.. 52

你可以使用ctypes及其c_uint32:

>>> import ctypes
>>> m = 0xFFFFFF00
>>> ctypes.c_uint32(~m).value
255L

所以我在这里做的是转换~m为C 32位无符号整数并以Python格式检索其值.



1> DzinX..:

你可以使用ctypes及其c_uint32:

>>> import ctypes
>>> m = 0xFFFFFF00
>>> ctypes.c_uint32(~m).value
255L

所以我在这里做的是转换~m为C 32位无符号整数并以Python格式检索其值.



2> John Milliki..:

你可以掩盖一切0xFFFFFFFF:

>>> m = 0xFFFFFF00
>>> allf = 0xFFFFFFFF
>>> ~m & allf
255L



3> pixelbeat..:
from numpy import uint32


为什么不携带?
推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有