TLV编码学习

TLV就是Tag+Length+Value

     

Tag(1或者多字节):

     

Tag首字节:

Bit70表示tag只有1字节, 1表示tag是多字节

Bit6表示通用编码tag还是私有编码tag解析

5bit0/1分别表示Value字段按照基本类型编码或者TLV方式编码。

     

Bit0~4,如果 Tag Value小于31,直接放Tag Value,大于31,随后的字节是Tag Value,并且这5bit全部写1

     

Tag后续字节:

每个字节只用7bitbit0~6,最高位bit7用来标志是否还有后续字节(1Yes 0No)。比如说Tag Value为:

00000001 11111111 11111111 (131071)写入tag value就是10000111 1111111 01111111

Length:描述Value字段的字节数

分为定长和不定长两种

定长:

分为短形式/长形式两种

短形式:

bit70,表示Length一个字节内就可以描述Value的字节数,也就是Value占用0-127字节

     

     

长形式:Value超过127字节,Length用多字节描述,此时第一个字节bit71bit0-6表示Length字段的长度,然后Length的值跟在后面,可见Length字段最大是127字节。

比如说Value234字节——1110 1010,超过了127Length字段为 10000001 1110 1010(第一个字节描述Length字段是一个字节,然后后面一个字节描述Value的长度)

     

     

变长

Length的第一个字节固定写0x80,然后写Value,最后用两个0x00收尾

     

可以看到通过Length的第一个字节就把短形式,长形式,变长三种方式区分开

     

Value:

实际的数据

     

    

posted @ 2025-02-21 22:18  gjh308  阅读(307)  评论(0)    收藏  举报