擅长:python、mysql、java
<p>对于这些类型的任务,我喜欢用映射到nice文本表示的位建立一个字典。因为Python支持二进制文本,所以它可以很好地自我记录。。。你知道吗</p>
<p>比如:</p>
<pre><code>status_lookup = { 0b00000001 : "Lights",
0b00000010 : "Fan",
0b00000100 : "Alarm",
0b00001000 : "Door"}
</code></pre>
<p>如果您想要当前“开启”状态的列表:</p>
<pre><code>bits = 0x0a # or whatever your input value was
currently_on = [status_lookup[i] for i in status_lookup if i & bits]
</code></pre>
<p>如果要将它们连接成一个字符串:</p>
<pre><code>print("; ".join(currently_on))
</code></pre>
<p>另外,如果您使用的是Python 3.4+,则可以使用新的enum模块执行类似的操作:</p>
<pre><code>from enum import IntEnum
class Status(IntEnum):
Lights = 0b00000001
Fan = 0b00000010
Alarm = 0b00000100
Door = 0b00001000
bits = 0x0a
currently_on = [x for x in Status if x & bits]
</code></pre>