将位掩码转换为字符串列表的最短方法是什么?

时间:2019-12-04 19:47:34

标签: python python-3.x

恐怕要处理硬件,所以先验是固定的。

我有一个字节形式的位掩码,我需要根据每个位的值创建一个字符串列表,以便可以打印出哪些位在“ on”上。

我可以用一个枚举和一堆代码来做到这一点,但我想知道是否有一种更简单的方法可以忽略掉。

bitmap = 127
result_list = your_code_here(bitmap)
print(*result_list, sep = ", ")  

仅在二进制FlagN的那个位置上有1时才打印bitmap的预期输出。

Flag1, Flag2, Flag3,

1 个答案:

答案 0 :(得分:1)

您可以为每个位创建一个对应值的列表/哈希表,然后根据该位是否被翻转来从该列表中获取并打印值:

flags = ['Booted',
         'Enabled',
         'Communicating',
         ...]
bitmask = int(input("Input the bitmask: "))
print([flag for (index, flag) in enumerate(flags) if (bitmask & 2**index)])

例如输入5作为位掩码(即0b101)将输出['Booted', 'Communicating']