python - 需要帮助解包位值
问题描述
我需要一些帮助/指导来解压缩代表 Python 中的位的值。我正在解析 json 对象,并且有一个字段表示使用位值描述问题的标志数。
例如,值 24 表示第 3 位和第 4 位都已设置 (8 + 16 = 24),因此它具有 msg4 和 msg5。我知道我需要使用按位运算符,但我真的不明白如何将值解压缩成单独的位。
从我正在使用的 API 的文档中:
位 0 (1) - 示例 msg1
位 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
如果你发现两个的显式幂比移位更清晰,你也可以写
if val & 1:
# msg1
elif val & 2:
# msg2
elif val & 4:
# msg3
and so on
推荐阅读
- ssh - 如何在新的电缆调制解调器中设置网关端口转发
- dialogflow-es - 在一个意图中标记为必需的参数已在另一个意图中得到满足
- azure - Azure Dev Ops CICD 副本发布未按预期工作
- javascript - 如何使用 html、css 和 javascript 制作卡片滑块
- excel - excel超链接函数到变量
- google-bigquery - 在 Bigquery 上创建计划查询时出错“创建计划查询时出错:tq”
- python - 通过 Pinata API 和 python 固定目录
- java - 在 DevEco 的预览器中更改文本的语言
- sql - 获取需要与其他列不同的值的列的总和
- python - JupyterHub 在运行 Python Telegram Bot 时睡着了