擅长:python、mysql、java
<p>要将表示位的整数转换为8位字节(仍为整数),请使用位移位:</p>
<pre><code>result = 0
for bit in bits:
result = result << 1 | bit
</code></pre>
<p>或使用<code>reduce()</code>:</p>
^{pr2}$
<p>这可以转换为一个二进制字符串,其中<code>format(result, 'b')</code>,可选地加上宽度和前缀<code>0</code>,以填充一定长度的零。在</p>
<p>演示:</p>
<pre><code>>>> bits = [0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1]
>>> reduce(lambda n, b: n << 1 | b, bits)
934809
>>> result = 0
>>> for bit in bits:
... result = result << 1 | bit
...
>>> result
934809
>>> format(result, '021b')
'011100100001110011001'
</code></pre>
<p>如果需要直接转到二进制字符串,只需将位映射到字符串并连接:</p>
<pre><code>>>> ''.join(map(str, bits))
'011100100001110011001'
</code></pre>
<p>可使用<code>str.zfill()</code>将其进一步填充到64个字符:</p>
<pre><code>>>> ''.join(map(str, bits)).zfill(64)
'0000000000000000000000000000000000000000000011100100001110011001'
</code></pre>