备案 网站名,宁波网站建设设计服务公司,未来做哪个网站能致富,稻壳ppt模板免费下载MQTT协议中的剩余长度#xff08;Remaining Length#xff09;是一个重要的概念#xff0c;它表示当前报文剩余部分的字节数#xff0c;包括可变报头和负载的数据#xff0c;但不包括用于编码剩余长度字段本身的字节数。以下是对MQTT剩余长度的详细说明#xff1a;
一、…MQTT协议中的剩余长度Remaining Length是一个重要的概念它表示当前报文剩余部分的字节数包括可变报头和负载的数据但不包括用于编码剩余长度字段本身的字节数。以下是对MQTT剩余长度的详细说明
一、剩余长度的位置和表示
位置剩余长度从MQTT报文的第二个字节开始表示即紧跟在固定报头之后。表示剩余长度使用一个变长度编码方案根据可变报头和负载数据的实际长度动态变化。它可以是一个字节、两个字节、三个字节或最多四个字节来表示。
二、剩余长度的编码方式
单字节编码对于小于128的剩余长度值它使用单字节编码。在这个字节中低7位bit 0到bit 6用于编码数据最高位bit 7用作延续位continuation bit。如果最高位为0表示剩余长度就是这一个字节所表示的值如果最高位为1则表示后续还有字节用于表示剩余长度。多字节编码对于大于或等于128的剩余长度值需要使用多个字节来表示。每个字节的低7位用于编码数据最高位用作延续位。延续位为1表示后续还有字节为0则表示这是最后一个字节。
三、剩余长度的取值范围
1个字节时剩余长度的取值范围为00x00到1270x7F。2个字节时剩余长度的取值范围为1280x80, 0x01到163830xFF, 0x7F。3个字节时剩余长度的取值范围为163840x80, 0x80, 0x01到20971510xFF, 0xFF, 0x7F。4个字节时剩余长度的取值范围为20971520x80, 0x80, 0x80, 0x01到2684354550xFF, 0xFF, 0xFF, 0x7F。
四、剩余长度的计算示例
假设一个MQTT报文的剩余长度需要表示300个字节由于300大于127因此不能只用一个字节表示。需要使用两个字节来表示计算过程如下
第一个字节最高位为1延续位低7位表示1因为300/1282余44商为2二进制0000 0010但因为是延续位所以实际写入的是1000 0010即十六进制的0x82。第二个字节表示余数44即二进制0010 1100十六进制为0x2C。