Python的2.2:如何获得低32位出一个64位的号码吗?

我有一个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,反正。

为了您的信息,我前一段时间问了一个莫名其妙相关的问题。

您需要使用长整型。

foo = 0xDEADBEEFCAFEBABEL
fooLow = foo & 0xFFFFFFFFL

马修在这里,我发现我已经离开了一条信息,我使用Python版本2.2.3。 我成功地尝试了这一点在另一台机器瓦特/ 2.5.1版本,一切都按预期工作。 不幸的是我需要使用旧版本。

不管怎样,谢谢大家的响应。 追加'L',似乎这样的伎俩,这是一次性的,所以我感觉很舒服,这种方法。

谢谢,

马修

显然,如果这是一个一次性的,然后用长整数追加'L'你的文字是快速的答案,但对于更复杂的情况下,你可能会发现,你可以写更清晰的代码,如果你在http://计算器.COM /问题/ 142812 /的确,蟒蛇具备-A-位字段类型,因为这是你似乎可以用你的位掩码。

我觉得我个人的偏好很可能会http://docs.python.org/library/ctypes.html#ctypes-bit-fields-in-structures-unions虽然,因为它是在标准库中,并有一个非常明确的API 。

分类:蟒蛇 时间:2015-03-15 人气:0
本文关键词: 蟒蛇
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.192 (s). 10 q(s)