如何根据python中的位置获取十六进制数的位值

时间:2016-02-20 07:31:49

标签: python

嗨朋友我是Python语言的新手。我正在尝试编写一些我希望稍后在我的python模块中集成的小代码。这是我的问题

  1. 我在文件中有一个类似a[31:0]= 0X00010001的数字,我希望根据位置获取位值,并根据其位值执行操作。 我希望使用像普通类这样的东西,如果一个数字超过32位,我也在寻找解决方案。 0x00010001.getbit(0) == 0做一些操作。如果bit0为0,则期望进行操作。

  2. 我正在寻找是否有相应的掩码位如何根据掩码位获取值 在这种情况下0x00010001 bit[15]是掩码,bit[0]是值。

  3. 感谢帮助。

    我尝试过比特流模块,但没有成功

1 个答案:

答案 0 :(得分:5)

对于第一个问题:

def getbit(x,n):
  "Get the n-th bit of the number x"
  return x & (1 << n) and 1 or 0

说明:x & (1 << n)表示x2^n之间的按位AND。 表达式P and 1 or 0表示:如果P则返回1,否则返回0。

这适用于任何大小的数字。 Python并不限制你使用32位整数。