TLV编码详解

解释信息网上很多,非原创!!!!!!!!!!!!!!

TLV编码属于BER编码的一种,ASN1标准。全称:Tag(标签),Length(长度),Value(值)。
其中Tag一般为1~4字节。
TLV结构见下图:
TLV编码详解_第1张图片
由图可知:

第一个字节 含义 取值
位8 位7 表明tag所属类型 00 – 通用级
01 – 应用级
10 – 规范级
11 – 私有级
位6 表明该Tag的Value段是否嵌套了子Tag 0 – 没有
1 – 有
位5~1 表明第二个字节是否一同表示该Tag 11111: 全为1表明下一个字节一同表示该Tag
xxxxx: 剩下的所有情况都表明没有下一字节一同表示该Tag
第二个字节 含义 取值
位8 1
位7~1 大于0
表示下一个字节也一同表示该Tag

第三个字节同第二个字节的格式。

例:
9F 39 01 90 FF EE 01 05 DF EE 30 01 0C DF EE 26 02 E8 80 DF EF 41 10 53 DA 7A 2B DA 0E 81 86 0D 8D 5F 45 1B 03 6A 5E DF EF 42 0A FF FF 98 76 54 32 FF 00 01 EC

代码 含义
9F 39 01 90 Tag: 0x9F39, length: 0x01, value: 0x90
FF EE 01 05 DF EE 30 01 0C Tag: 0xFFEE01, length: 0x05, value: 0xDFEE30010C
DF EE 26 02 E8 80 Tag: 0xDFEE26, length: 0x02, value: 0xE880
DF EF 41 10 53 DA 7A 2B DA 0E 81 86 0D 8D 5F 45 1B 03 6A 5E Tag: 0xDFEF41, length: 0x10, value: 0x53DA7A2BDA0E81860D8D5F451B036A5E
DF EF 42 0A FF FF 98 76 54 32 FF 00 01 EC Tag: 0xDFEF42, length: 0x0A, value: 0xFFFF98765432FF0001EC

自己尝试编写了一下,已经上传Github,欢迎参观。
能力有限,代码肯定有许多改进的地方,欢迎告知!!!!!!!!!!
源代码(Github)

你可能感兴趣的:(通信)