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

为了提供您的信息,我前段时间询问了一个与相关的信息。

10-12 18:22
查看更多