擅长:python、mysql、java
<p>如果我正确理解您的要求,您可以尝试以下方式:</p>
<p><strong>test.py:</strong></p>
<pre><code>def bit_value(data, first_bit, last_bit):
result = ""
for i in range(47 - last_bit, 48 - first_bit):
byte = i // 8
bit = 7 - (i % 8)
if bit < 6:
result += "01"[data[byte] >> bit & 1]
return int(result, 2)
def main():
data = b"\x12\x08\x1c\x30\x32\x21"
test1 = bit_value(data, 0, 15)
print(f"{test1:#b}, {test1}")
test2 = bit_value(data, 6, 12)
print(f"{test2:#b}, {test2}")
if __name__ == "__main__":
main()
</code></pre>
<p><strong>测试:</strong></p>
<pre><code>$ python test.py
0b110010100001, 3233
0b10010, 18
</code></pre>