Python2.2:如何从64位数字中获取较低的32位?

2024-06-01 04:41:28 发布

您现在位置: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位。在

我错过了一些简单的事情吗?在

谢谢!在

马修


Tags: 实用程序fieldas数字someneed事情num
3条回答

你需要使用长整数。在

foo = 0xDEADBEEFCAFEBABEL
fooLow = foo & 0xFFFFFFFFL
>>> 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

它似乎有用,否则我就错过了问题。无论如何,我使用的是python2.6.1。在

为了你的信息,我前段时间问了一个有点相关的question。在

在这里,我注意到我遗漏了一条信息,我使用的是python2.2.3版本。我设法在另一台带有2.5.1版本的机器上进行了测试,一切都如预期的那样工作。不幸的是我需要使用旧版本。在

不管怎样,谢谢你们的回复。附加'L'似乎能起到作用,而且这是一次性的,所以我对这种方法感到很舒服。在

谢谢

马修

相关问题 更多 >