需要帮助解包位值

Need help unpacking bit values

我需要一些帮助/指导来解包代表 Python 中的位的值。我正在解析 json 个对象,并且有一个字段表示使用位值描述问题的标志的数量。

例如,值 24 表示第 3 位和第 4 位都已设置 (8 + 16 = 24),因此它有 msg4 和 msg5。我知道我需要使用按位运算符,但我真的不明白如何将值解压缩为单独的位。

来自 API 我正在使用的文档:

位 0 (1) - 示例消息 1

位 1 (2) - 示例 msg2

位 2 (4) - 示例 msg3

位 3 (8) - 示例 msg4

位 4 (16) - 示例 msg5

位 5 (32) - 示例 msg6

如果 val 是你的值:

if val & (1 << 0):
  # msg1
elif val & (1 << 1):
  # msg2
elif val & (1 << 2):
  # msg3
and so on

如果你发现2的显式幂比移位更清楚,你也可以写

if val & 1:
  # msg1
elif val & 2:
  # msg2
elif val & 4:
  # msg3
and so on