что такое tlv (tag-length-value)?

Что такое tlv?

поместить крючки (функции) в код вместо if/else?

Если у меня есть один кусок кода, работающий на разных платформах, в разных местах в коде, я могу поместить крючки функции tlv, чтобы определить, на какой платформе я нахожусь и делаю соответственно? Или что-то в этом роде?

преимущества могут быть более чистым кодом? легко поддерживать? Когда новая платформа добавляется, только код tlv должен измениться, а не исходный код?

Я могу быть здесь совершенно неправильно.

7 ответов


TLV-это метка-длина-значение кодирования. Часто его лучше называть его оригинальным именем, type-length-value.

первое поле - это" тип " обрабатываемых данных, второе поле указывает "длину" значения, третье поле содержит "длину" объема данных, представляющего значение для "типа".

множественные части данных можно передать в таком же сообщении путем добавлять больше триплетов к ранее существующему сообщение.

есть страница в Википедии, охватывающая ее чуть более подробно. Не запутайтесь, хотя каждый триплет является описанием "верхнего уровня", обычно нет вложенности элементов в TLV (хотя вы могли бы придумать способ сделать это, кодируя триплеты TLV в V другого тега).


TLV-это способ хранения данных для облегчения быстрого анализа данных.

обычно Вы читаете тип (тег), длину и значение, а затем отправляете эти данные в функцию процессора. Этот процессор функционирует только функция будет обрабатывать тип X. Затем вы читаете следующий тип, его длину и значение и отправляете его в соответствующий процессор.

обычно он используется как простой способ обработки данных без больших дополнительных затрат.


мы все еще используем TLV для форматирования данных. И если мы хотим отправить данные получателю, мы готовим пакет TLV, который содержит данные длины тега. Например:

Data Tag = DF 82 0A   
Data Length = 03  
Data Value =  30 31 32. 

когда мы хотим отправить его, мы объединяем эти 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) и еще один байт(data len). Он также будет считывать байты данных до len.


TLV относится к значениям кодирования в трио типа-длины-значения, и это более общая форма документирована в Википедии.

в некотором контексте (например, EMV) TLV относится к более конкретный X. 690, который также задокументирован в Википедии.

TLV имеет следующие преимущества:

  • относительно компактный формат кодирования
  • относительно просто разобрать (я написал базовый парсер X. 690 В паре часов)
  • X. 690 TLV имеет поддержку вложенных типов (эта часть немного сложнее для анализа, но из того, что я могу сказать, не требуется для EMV)

самый большой недостаток TLV заключается в том, что он не читается непосредственно человеком. Однако если данные преобразуются в шестнадцатеричную это не очень трудно читать.


Я думаю, что вы имеете в виду называется тип длина стоимостью, и есть Википедия страница для него. Надеюсь, это поможет.


TLV: tag-length-value

пример: 045002124354

Если мы взяли в качестве примера, что в конфигурации : 045 смысл
выигрышный номер в телешоу так: значение выигрышного номера: 12

  • TAG : поиск по тегам : 045
  • длина: длина, например, находится на 3 позиции так: 002
  • стоимостью : теперь значение : 12 ( на 2 позиции )

TLV полезно для создания протоколов связи. Вы используете тег, длина, стоимостью для хранения информации. Вы можете видеть очень beautifull реализация (я думаю, что лучший) на github.