什么是tlv?
将钩子(函数)放在代码而不是if/else中?
如果我在不同的平台上运行一段代码,在代码的不同位置,我可以放置tlv函数钩子来识别我所在的平台并做相应的操作?或类似的东西?
好处可以更清洁代码?容易维护?添加新平台时,只需更改tlv代码而不是源代码?
我在这里可能完全错了.
Edw*_*uck 28
TLV是标签长度值编码.通常它更好地通过它的原始名称,类型 - 长度 - 值来引用.
第一个字段是正在处理的数据的"类型",第二个字段指定值的"长度",第三个字段包含表示"类型"的值的"长度"数据量.
通过将更多三元组附加到先前存在的消息,可以在同一消息中发送多条数据.
维基百科上有一个页面,只是更详细一点.不过不要混淆,每个三元组都是"顶级"描述,TLV中通常没有项目嵌套(尽管你可以通过在另一个标签的V中编码TLV三元组来实现这一点).
Kev*_*imm 13
TLV是一种存储数据的方式,以便于快速解析该数据.
通常,您读取类型(标记),长度和值,然后将这些数据发送到处理器函数.此处理器功能仅用于处理类型X.然后,您读取下一个类型,它的长度和值,并将其发送到适当的处理器.
它通常用作处理数据的简单方法,而不会产生大量额外开销.
TLV 指的是类型-长度-值三重奏中的编码值,这种更通用的形式记录在 WikiPedia 上。
在某些上下文中(例如 EMV),TLV 指的是更具体的 X.690,它也记录在 WikiPedia 上。
TLV具有以下优点:
TLV 最大的缺点是它不是人类直接可读的。但请注意,如果数据转换为十六进制,则读取起来会比较困难。
我们仍然使用TLV进行数据格式化.如果我们想要将数据发送到接收器,我们准备一个包含Tag-Length-Value数据的TLV包.例如;
Data Tag = DF 82 0A
Data Length = 03
Data Value = 30 31 32.
Run Code Online (Sandbox Code Playgroud)
当我们想要发送它时,我们连接这个3行数据,如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的数据字节.
| 归档时间: |
|
| 查看次数: |
44690 次 |
| 最近记录: |