1.固定报头中剩余长度
剩余长度 = 可变报头长度 + 负载长度
固定报头中剩余长度最少1个字节,最多4个字节,因为剩余长度使用的是一种变长度的编码方案。
2.固定报头中剩余长度 是128进制
每个字节的最高位置1表示还需要另外一个字节来组合表示剩余数据长度
2.1 固定报头中剩余长的编码
1.确定需要几个字节,设置标志位 位7
2.计算每个字节的具体内容,构成 位0~位6
3.位0~位6结合标志位位7,完成剩余长度
2.2 剩余长度例子
① 100,100/128=0,等于0无需仅为,所以bit7是0,然后100%128=100,所以bit0~bit6就是0x64,剩余长度就是1个字节,0x64.
②1000,1000/128=7,不等于0需要进位,然后7/128=0,等于0无需再进位,所以总体长度进1位,需要2个字节,第1个字节bit7是1,第二字节bit7是0。然后1000%128=104,所以第1个字节bit0~bit6就是0x68,然后7%128=0,所以第二个字节
bit0~bit6就是0x07,然后再结合上bit7的话,就是0xE8和0x07
③10000,10000/128 = 781,不等于0需要进位,然后781/128=6,不等于0再进一位,6/128=0,等于0无需再进位了,所以总体进2位,需要3个字节,第一个字节bit7是1,第2个字节bit7是1,第3个字节bit7是0.然后10000%128=32,就是0x0d,
所以第一个字节bit0~bit6就是0x20,然后781%128=13,所以第2个字节bit0~bit6就是0x0d,然后6%128=6,所以第3个字节bit0~bit6就是0x06,然后再结合上bit7的话,就是0xA0,0x80,0x06
④100000000,100000000/128 = 781250,不等于0需要进位,然后 781250/128=6103,不等于0再进一位,,然后 6103/128=47,不等于0再进一位,47/128=0,等于0无需再进位了,所以总体进3位,需要4个字节,第一个字节bit7是1,
第2个字节bit7是1,第3个字节bit7是1.,第4个字节bit7是0. 然后100000000%128=0,就是0x00,所以第一个字节bit0~bit6就是0x00,然后781250%128=66,所以第2个字节bit0~bit6就是0x42,然后 6103%128=87,所以第3个字节bit0~bit6就是0x57,
然后 47%128=47,所以第4个字节bit0~bit6就是0x2F,然后再结合上bit7的话,就是0x80,0xC2,0xD7,0x2F