我有一个由各种位字段组成的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。
为了提供您的信息,我前段时间询问了一个与相关的信息。