需要帮助解包位值
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
我需要一些帮助/指导来解包代表 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