что такое 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.