Что такое TLV (значение длины метки)?

StackOverflow https://stackoverflow.com/questions/4413080

  •  08-10-2019
  •  | 
  •  

Вопрос

Что такое TLV?

Поставить крючки (функции) в код вместо того, чтобы / else?

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

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

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

Это было полезно?

Решение

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

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

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

Там страница на Википедии, покрывающая ее чуть более подробно. Отказ Не путайтесь, хотя каждый триплет - это описание «верхнего уровня», обычно нет вложенности элементов в 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) и еще один байт (данные Len). Он также будет читать байты данных до Len.

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

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

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

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

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

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

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

Пример: 045002124354.

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

  • ЯРЛЫК : Поиск тега, который: 045
  • ДЛИНА : длина, например, находится на 3 положении так: 002
  • СТОИМОСТЬ : Теперь значение: 12 (на 2 позиции)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top