python 2.2 : How to get the lower 32 bits out of a 64 bit number?

标签 python

我有一个由各种位字段组成的 64 位数字,我正在编写一个简单的 Python 实用程序来解析该数字。我面临的问题是较低的 32 位由一个字段组成,使用位移或位掩码的某种组合并不能只给出 32 位。

big_num = 0xFFFFFFFFFFFFFFFF
some_field = (big_num & 0x00FFFF0000000000) # works as expected
field_i_need = big_num & 0x00000000FFFFFFFF # doesn't work  

发生的是 field_i_need 等于 big_num,而不是低 32 位。

我是不是漏掉了一些简单的东西?

谢谢!

马修

最佳答案

>>> big_num = 0xFFFFFFFFFFFFFFFF
>>> some_field = (big_num & 0x00FFFF0000000000) # works as expected
>>> field_i_need = big_num & 0x00000000FFFFFFFF # doesn't work
>>> big_num
18446744073709551615L
>>> field_i_need
4294967295L

它似乎有效,或者我错过了这个问题。无论如何,我使用的是 Python 2.6.1。

供您引用,我问了一个以某种方式相关的 question前段时间。

关于 python 2.2 : How to get the lower 32 bits out of a 64 bit number?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/474949/

相关文章:

Python - 使用ffprobe获取视频的持续时间

python - 如何为 python Telegram Bot 进行单元测试?

python - 如何使用 numpy 分别计算每年的平均月温度?

python - 如何在 python 中打印消息框?

python - 为现有的 Plone 3.3.4 安装向 Python 添加 SSL 支持

python - 如何使用 Python 的 UnRAR 库记录错误的密码?

python - pandas:使用正则表达式验证数据框单元格

python - 从 String 在 python 中写入 TIFF 文件

python - ndarray 行不显示每一行

python - 无法在 python 2.7.x 控制台中输入 (č ć š ž đ )