什么是tlv?
将钩子(函数)放在代码中而不是if / else?
如果我有一段代码在不同的平台上运行,在代码的不同位置,我可以放置tlv函数钩子来识别我所在的平台并做相应的操作?或类似的东西?
好处可以更清洁代码?容易维护?添加新平台时,只需更改tlv代码而不需要更改源代码吗?
我在这里可能完全错了。
答案 0 :(得分:27)
TLV是Tag-length-value编码。通常它更好地用它的原始名称,类型 - 长度 - 值来引用。
第一个字段是正在处理的数据的“类型”,第二个字段指定值的“长度”,第三个字段包含表示“类型”值的“长度”数据量。
通过在先前存在的消息中附加更多三元组,可以在同一消息中传输多个数据。
There's a page on wikipedia covering it in just a little more detail。不要感到困惑,每个三元组都是“顶级”描述,TLV中通常没有项目嵌套(尽管你可以通过在另一个标签的V中编码TLV三元组来实现这一点)。
答案 1 :(得分:12)
TLV是一种存储数据的方式,以便于快速解析该数据。
通常,您读取类型(标记),长度和值,然后将这些数据发送到处理器函数。此处理器功能仅用于处理类型X.然后,您读取下一个类型,它的长度和值,并将其发送到适当的处理器。
它通常用作处理数据的简单方法,而无需额外的开销。
答案 2 :(得分:5)
我们仍然使用TLV进行数据格式化。如果我们想要将数据发送到接收器,我们准备一个包含Tag-Length-Value数据的TLV包。例如;
Data Tag = DF 82 0A
Data Length = 03
Data Value = 30 31 32.
当我们想发送它时,我们连接这三行数据,如DF 82 0A 03 30 31 32.数据包可以包含很多这样的数据。
当接收者得到它时,解析包非常容易,接收者可以平滑地解析所有数据。
数据分析;
数据:DF 82 0A 03 30 31 32 DF 82 0B 04 01 12 22 33
DF 82 0A和DF 82 0B是预定义的(值类型(BCD,HEX,ASCII))标签。当数据到达时,在循环中,首先解析器将查找标签(即DF 82 0A)和另一个字节(数据len)。它还将读取高达len的数据字节。
答案 3 :(得分:3)
TLV指的是Type-Length-Value三重奏的编码值,以及more general form is documented on WikiPedia。
在某些情境中(例如EMV),TLV指的是more specific X.690 which is also documented on WikiPedia。
TLV具有以下优点:答案 4 :(得分:1)
我认为你所指的是 Type Length Value ,并且有一个维基百科page。希望有所帮助。
答案 5 :(得分:0)
TLV:tag - length - value
示例:045002124354
如果我们以配置为例:045是
的意思
在电视节目中获胜的号码所以:中奖号码的价值是:12
答案 6 :(得分:0)
TLV对于创建通信协议很有用。您可以使用标记,长度,值来存储信息。您可以看到 beautifull 实施(我认为最好)on github。