TLV格式解析说明

TLV格式解析说明
关于TLV格式报文的解析,自己总是忘记,尤其对于L域长度的判断更加捉急,所以记录下来加深自己的印象同时分享给大家。
TLV格式报文的3个字母分别代表tag标签(也可以理解为type类型),length长度以及value值。
T占2个字节。
L通常占1-4个字节(当然也有可能为更多,目前还没遇到过),长度有2种表示方法一种为占1个字节,最高位为0,其余为表示value的长度;另一种为第一个字节最高位为1,其余7位代表后面几个字节代表value长度,听起来比较晦涩,后面会举例分析。
V占L指定的字节数。

对于TLV的分析,刚入门可能有一些难度,现在举几个例子,进行分析,加深理解。

例1.报文81 29 40 2c XX XX XX...
tag:
对应前2个字节为:81 29(该值没啥具体含义,实际可能为工作中定义的一些标签)
length:
我们首先长度域的第一个字节40,0x40二进制 0100 0000,最高位为0,因此0x40就代表value该TLV的value域长度,即value域长度为从第四个字节2c开始往后(包含2c)的64个字节。
value:
2c开始往后64个字节。

例2.报文81 29 07 2c XX XX XX...
tag:
对应前2个字节为:81 29
length:
长度域第一个字节为07查看表格在范围0x00-0x7f,即长度域为就占1个字节。对应二进制0111,最高位至0,因此value域的长度为0111,7个字节
value:
2c开始往后7个字节。

下面搞个有难度的

例3:报文81 29 81 2c 02 XX XX...
tag:
对应前2个字节为:81 29
length:
长度域第一个字节为81,对应二进制1000 0001,最高位为0,后七位为000 00001,因此0x81的后面1个字节2c代表value的长度,即value域长度为44个字节。
value:
从02开始往后的44个字节,包含02。

例4:报文81 29 83 2c 02 68 XX...
tag:
对应前2个字节为:81 29
length:
长度域第一个字节为83,二进制位1000 0011,最高位为1,后七位000 0011代表后面的3个字节为value域长度,即2c0268是value域的长度,2884200个字节。
value:
从XX开始往后的2884200个字节

posted @ 2022-06-14 16:20  冲向云霄1998  阅读(1355)  评论(0编辑  收藏  举报