Skip to main content
 首页 » 编程设计

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

2025年05月04日11kevingrace

我有一个由各种位字段组成的 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前段时间。