Python 从2个字节中读取14位数字
我正在尝试解码本规范中描述的运行长度编码。 它说: 每个计数可能有1、2、3或4个字节。第一个计数字节的前两位包含0、1、2、3,表示该计数包含在1、2、3或4个字节中。然后字节的其余部分(6位)表示计数中的六个最高有效字节。下一个字节(如果存在)表示重要性降低 我已经成功地读取了长度的前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 数据是大端数据。我尝试过用不同的端位移位
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