что такое tlv (значение длины тега)?

Что такое тлв?

Ставить хуки (функции) в код вместо if/else?

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

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

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


tlv
person hari    schedule 10.12.2010    source источник
comment
Это не имеет ничего общего с кодом и все, что связано с данными.   -  person Karl Knechtel    schedule 11.12.2010
comment
@karl: (я знаю, что это старая ветка, но каким-то образом я снова оказался здесь сегодня :)) Вы уверены, что это не имеет ничего общего с кодом? Потому что я предполагаю, что все наоборот - все о коде и ничего о данных. :D   -  person hari    schedule 15.04.2011


Ответы (7)


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

Первое поле — это «тип» обрабатываемых данных, второе поле указывает «длину» значения, третье поле содержит «длину» количества данных, представляющих значение для «типа».

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

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

person Edwin Buck    schedule 10.12.2010
comment
Спасибо Эдвин. Я искал точную потребность и плюсы / минусы этого. Если вы знаете какой-либо пример, дайте мне знать. - person hari; 11.12.2010
comment
Плюсы в том, что это очень простой формат (легко анализируется, вы можете пропустить новые добавленные поля в старых программах). Минусы в том, что это очень простой формат (нет встроенной поддержки иерархии, плохое двоичное кодирование, тип данных должен быть известен обеим сторонам заранее или передаваться каким-то специальным образом, очень плохая поддержка, когда данные изменяются с течением времени). не аддитивны, а являются заменами и т. д.). Некоторые из этих недостатков поправимы, например, вы можете использовать uuencode для передачи двоичного кода, но это просто дополнительная работа для де-uuencode на другом конце. - person Edwin Buck; 13.12.2010
comment
На самом деле вы можете поместить больше TLV в другие TLV: 6-й бит 1-го байта поля type в структуре TLV, если установлено значение 1, означает сконструированный< /i>, что указывает на то, что часть v структуры TLV на самом деле является набором других TLV. - person Fabio A.; 24.09.2013
comment
Фабио, да, вы можете вставлять TLV в TLV, как упоминалось в моем исходном сообщении; однако не существует стандарта, для которого необходимо установить байт, если вы не используете что-то более конкретное, чем TLV, например, кодирование X.690 BER или что-то в этом роде. В упомянутой кодировке именно 6-й байт подполя класса тега помечает сконструированное значение, а не первый байт поля типа. Таким образом, очевидно, что не существует общепринятого сконструированного флага тега, без выбора среди множества различных более конкретных протоколов, таких как TLV. - person Edwin Buck; 24.09.2013
comment
Разве браузер не будет работать быстрее, используя TLV вместо HTML? - person ar2015; 16.02.2020
comment
@ ar2015 Поскольку TLV обычно хранит не деревья элементов, а списки элементов, я полагаю, что это будет сильно зависеть от реализации/подхода. TLV не является заменой HTML, и даже x.690 BER потребует некоторой доработки, поскольку возможные древовидные структуры сильно отличаются. - person Edwin Buck; 17.02.2020
comment
Я не поэтому ты так говоришь. TLV может иметь список полезной нагрузки, в которую встроены некоторые другие TLV. Таким образом они поддерживают деревья. - person ar2015; 18.02.2020
comment
@ar2015 ar2015 Но сам по себе TLV даже не поддерживает полезные нагрузки, которые являются TLV, это то, что кодировки, такие как X.690 BER, добавляют к TLV. Кроме того, структура HTML делает вложенную кодировку текста и тегов менее очевидной, и без нового вопроса в StackOverflow было бы сложно описать плюсы и минусы нового подхода. Пожалуйста, рассмотрите возможность задать новый вопрос, так как я думаю, что ваш первоначальный вопрос о том, не будет ли браузер работать быстрее при использовании TLV вместо HTML, является отличным вопросом в стиле StackOverflow. - person Edwin Buck; 19.02.2020

TLV — это способ хранения данных, облегчающий их быстрый разбор.

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

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

person KevinDTimm    schedule 10.12.2010
comment
Хотите знать, почему в настоящее время мало используется для общения и рендеринга веб-страниц? - person ar2015; 16.02.2020

Мы по-прежнему используем TLV для форматирования данных. И если мы хотим отправить данные получателю, мы готовим пакет TLV, который содержит данные Tag-Length-Value. Например;

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) и еще один байт (длина данных). Он также будет считывать байты данных до len.

person ceyun    schedule 07.11.2014
comment
как парсить эти данные? - person Harish Pathak; 14.08.2018
comment
Я добавил метод разбора. - person ceyun; 15.08.2018


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

person nategoose    schedule 10.12.2010

TLV: тег — длина — значение

ПРИМЕР: 045002124354

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

  • TAG : Поиск тега, который: 045
  • ДЛИНА: длина, например, находится на 3 позиции, поэтому: 002
  • VALUE: теперь значение: 12 (на 2 позиции)
person El mehdi AZROUR    schedule 16.12.2016

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

person grep    schedule 23.02.2018