formato tlv

formato tlv



¿Qué es tlv(tag-length-value)? (7)

Creo que a lo que te refieres se le llama Tipo Valor de Longitud , y hay una página de wikipedia para eso. Espero que ayude.

¿Qué es tlv?

Para poner ganchos (funciones) en el código en lugar de si / else?

Si tengo una pieza de código que se ejecuta en diferentes plataformas, en diferentes lugares del código, ¿puedo poner los ganchos de la función tlv para identificar en qué plataforma estoy y hacer las acciones correspondientes? ¿O algo así?

¿Los beneficios pueden ser un código más limpio? ¿facil de mantener? Cuando se agrega una nueva plataforma, solo el código tlv debe cambiar y no el código fuente.

Puedo estar completamente equivocado aquí.


TLV es útil para crear protocolos de comunicación. Usas etiqueta, longitud, valor para almacenar la información. Puedes ver una implementación muy bonita (creo que la mejor) en github .


TLV es la codificación de valor de longitud de etiqueta. A menudo es mejor referido por su nombre original, tipo-longitud-valor.

El primer campo es el "tipo" de datos que se procesan, el segundo campo especifica la "longitud" del valor, el tercer campo contiene una cantidad de datos de "longitud" que representa el valor del "tipo".

Se pueden transmitir múltiples datos en el mismo mensaje agregando más tripletes a un mensaje que ya existía.

Hay una página en wikipedia que lo cubre con un poco más de detalle . Sin embargo, no se confunda, cada triplete es una descripción de "nivel superior", por lo general no hay anidamiento de elementos en el TLV (aunque podría encontrar una manera de hacerlo codificando los tripletes de TLV en la V de otra etiqueta).


TLV es una forma de almacenar datos para facilitar el análisis rápido de esos datos.

Por lo general, usted lee el tipo (etiqueta), la longitud y el valor y luego los envía a una función del procesador. Las funciones de este procesador solo funcionarán para procesar el tipo X. Luego, leerá el siguiente tipo, su longitud y valor y lo enviará al procesador apropiado.

Normalmente se usa como una forma fácil de procesar datos sin una gran sobrecarga adicional.


TLV se refiere a los valores de codificación en los tríos Tipo-Longitud-valor, y esta forma más general está documentada en WikiPedia .

En algunos contextos (como EMV), TLV se refiere a la X.690 más específica, que también está documentada en WikiPedia .

TLV tiene las siguientes ventajas:

  • Formato de codificación relativamente compacto
  • Relativamente simple de analizar (escribí un analizador X.690 básico en un par de horas)
  • El TLV X.690 tiene soporte para tipos anidados (esta parte es un poco más complicada de analizar, pero de lo que puedo decir no se requiere para EMV)

La mayor desventaja de TLV es que no es directamente legible para humanos. Sin embargo, tenga en cuenta que si los datos se convierten a hexadecimal, solo es moderadamente difícil de leer.


TLV: etiqueta - longitud - valor

EJEMPLO: 045002124354

Si tomamos como ejemplo que en la configuración: 045 es el significado de la
Número ganador en un programa de televisión: el valor del número ganador es: 12

  • TAG : Búsqueda de la etiqueta que es: 045
  • LONGITUD : la longitud, por ejemplo, está en la posición 3, por lo que: 002
  • VALOR : Ahora el valor es: 12 (en la posición 2)

Todavía utilizamos TLV para el formato de datos. Y si queremos enviar datos al receptor, preparamos un paquete TLV que contiene datos de valor de longitud de etiqueta. Por ejemplo;

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

cuando queremos enviarlo, concatenamos estos datos de 3 filas como DF 82 0A 03 30 31 32. Los paquetes de datos pueden contener muchos datos de ese tipo.

Cuando el receptor lo recibe, el paquete de análisis es muy fácil y el receptor puede analizar todos los datos sin problemas.

Análisis de datos;

Datos: DF 82 0A 03 30 31 32 DF 82 0B 04 01 12 22 33

DF 82 0A y DF 82 0B son etiquetas predefinidas (tipo de valor (BCD, HEX, ASCII)). Cuando los datos llegaron, en un bucle, primero el analizador buscará la etiqueta (es decir, DF 82 0A) y un byte más (len de datos). También leerá bytes de datos hasta len.