什么是tlv?
将钩子(函数)放在代码中而不是if/else?
如果我有一段代码运行在不同的平台上,在代码中的不同位置,我可以放置tlv函数钩子来识别我在哪个平台上,并相应地执行?或者类似的东西?
好处可以是更干净的代码吗?易于维护?当添加新的平台时,只需要更改tlv代码,而不需要更改源代码?
在这一点上我可能完全错了。
发布于 2010-12-11 04:59:41
TLV是标记-长度-值编码。通常,最好使用它的原始名称type-length-value来引用它。
第一个字段是正在处理的数据的“类型”,第二个字段指定值的“长度”,第三个字段包含表示“类型”值的“长度”数据量。
通过将更多的三元组附加到先前存在的消息,可以在同一消息中传输多条数据。
There's a page on wikipedia covering it in just a little more detail。但是请不要混淆,每个三元组都是一个“顶层”描述,在TLV中通常没有项的嵌套(尽管您可以通过在另一个标签的V中编码TLV三元组来实现这一点)。
发布于 2010-12-11 04:53:56
TLV是一种存储数据的方式,以便于快速解析该数据。
通常,您读取类型(标记)、长度和值,然后将这些数据发送到处理器函数。这个处理器函数的唯一功能是处理类型X。然后,你读取下一个类型,它的长度和值,并将其发送到适当的处理器。
它通常被用作一种简单的方法来处理数据,而不需要太多额外的开销。
发布于 2014-11-07 15:32:50
我们仍然使用TLV进行数据格式化。如果我们想要发送数据到接收器,我们准备一个包含标签-长度-值数据的TLV包。例如:
Data Tag = DF 82 0A
Data Length = 03
Data Value = 30 31 32. 当我们想要发送它时,我们连接这3行数据,如DF820A033031332。数据包可以包含大量这样的数据。
当接收方获得它时,解析包是非常容易的,并且接收方可以流畅地解析所有数据。
数据解析;
数据: DF 82 0A 03 30 31 32 DF 82 0B 04 01 12 22 33
DF 82 0A和DF 82 0B是预定义的(值类型(BCD、HEX、ASCII))标签。当数据到达时,在循环中,首先解析器将查找标签(即。DF820A)和另一个字节(数据len)。它还将读取高达len的数据字节。
https://stackoverflow.com/questions/4413080
复制相似问题