Python 从2个字节中读取14位数字

Python 从2个字节中读取14位数字,python,bit-manipulation,binaryfiles,Python,Bit Manipulation,Binaryfiles,我正在尝试解码本规范中描述的运行长度编码。 它说: 每个计数可能有1、2、3或4个字节。第一个计数字节的前两位包含0、1、2、3,表示该计数包含在1、2、3或4个字节中。然后字节的其余部分(6位)表示计数中的六个最高有效字节。下一个字节(如果存在)表示重要性降低 我已经成功地读取了长度的前2位,但无法找出如何在接下来的14位中获得编码的值 以下是我获得长度的方法: number_of_bytes = (firstbyte >> 6) + 1 数据是大端数据。我尝试过用不同的端位移位

我正在尝试解码本规范中描述的运行长度编码。 它说:

每个计数可能有1、2、3或4个字节。第一个计数字节的前两位包含0、1、2、3,表示该计数包含在1、2、3或4个字节中。然后字节的其余部分(6位)表示计数中的六个最高有效字节。下一个字节(如果存在)表示重要性降低

我已经成功地读取了长度的前2位,但无法找出如何在接下来的14位中获得编码的值

以下是我获得长度的方法:

number_of_bytes = (firstbyte >> 6) + 1

数据是大端数据。我尝试过用不同的端位移位、解包和重新打包,但我无法得到我期望的数字。

要获得6个最低有效位,请使用

firstbyte & 0b111111
所以要得到一个14位的值

((firstbyte & 0b111111) << 8) + secondbyte

((firstbyte&0b111111)要获取6个最低有效位,请使用

firstbyte & 0b111111
所以要得到一个14位的值

((firstbyte & 0b111111) << 8) + secondbyte

((firstbyte&0b111111)出于教学目的,我会写二进制常量的所有8位
0b00111111
出于教学目的,我会写二进制常量的所有8位
0b00111111