• 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个字节

  • 相关阅读:
    幂集问题 子集问题
    windows下_snprintf用法
    动态绑定与静态绑定
    转载:(C++)浅谈多态基类析构函数声明为虚函数
    “希希敬敬对”队软件工程第九次作业-beta冲刺第六次随笔
    希希敬敬对Alpha阶段测试报告
    Alpha阶段个人总结
    “希希敬敬对”团队作业——敏捷冲刺7
    “希希敬敬对”团队作业——敏捷冲刺6
    “希希敬敬对”团队作业——敏捷冲刺5
  • 原文地址:https://www.cnblogs.com/gejuncheng/p/16375144.html
Copyright © 2020-2023  润新知