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