擅长:python、mysql、java
<p>不要使用<code>bytes</code>来表示整数值;如果需要位,<a href="http://docs.python.org/3/library/stdtypes.html#int.from_bytes" rel="nofollow">convert to an ^{<cd2>}</a>:</p>
<pre><code>value = int.from_bytes(your_bytes_value, byteorder='big')
bits_21_to_8 = (value & 0x1fffff) >> 8
</code></pre>
<p>其中<code>0x1fffff</code>掩码也可以用以下公式计算:</p>
<pre><code>mask = 2 ** 21 - 1
</code></pre>
<p>演示:</p>
<pre><code>>>> your_bytes_value = b'\x93\x4c\x00'
>>> value = int.from_bytes(your_bytes_value, byteorder='big')
>>> (value & 0x1fffff) >> 8
4940
</code></pre>
<p>然后可以使用<a href="http://docs.python.org/3/library/stdtypes.html#int.to_bytes" rel="nofollow">^{<cd4>} method</a>移回字节:</p>
<pre><code>>>> ((value & 0x1fffff) >> 8).to_bytes(2, byteorder='big')
b'\x13L'
</code></pre>