擅长:python、mysql、java
<p>这就是我想到的</p>
<pre><code>def bit_value(data, first_bit, last_bit):
""" Returns a value based on what bits are set between first_bit and last_bit of a byte array, ignoring bit 7 and 8 of each byte."""
# Convert bytes to a binary string
number = int.from_bytes(data, "big")
bits = f"{number:048b}"
# Change 7th and 8th bits to "-"
clean_bits = ""
for i in range(0,48):
if i % 8 == 0 or i % 8 == 1:
clean_bits += "-"
else:
clean_bits += bits[i]
# Strip out the unwanted "-"
clean_bits = clean_bits.replace("-","")
# Get the bits we want
bits_i_want = clean_bits[35-first_bit:36-last_bit]
# Get the value of the resulting binary string
value = int(bits_i_want, 2)
return value
</code></pre>