Domanda

Che cosa è TLV?

Per mettere ganci (funzioni) nel codice, invece di if / else?

Se ho un pezzo di codice in esecuzione su piattaforme diverse, in luoghi diversi nel codice, posso mettere TLV ganci di funzione per identificare quale piattaforma sono su e fare di conseguenza? O qualcosa di simile?

benefici possono essere codice più pulito? facile da mantenere? Quando una nuova piattaforma si aggiunge, solo TLV esigenze codice per modificare e non il codice sorgente?

I può essere completamente sbagliato qui.

È stato utile?

Soluzione

TLV è codifica Tag-lunghezza-valore. Spesso è meglio indicato con il suo nome, il tipo di lunghezza-valore originale.

Il primo campo è il "tipo" di dati trattati, il secondo campo specifica la "lunghezza" del valore, il terzo campo contiene una quantità "lunghezza" di dati che rappresentano il valore per il "tipo".

Più unità dati possono essere trasmessi nello stesso messaggio aggiungendo più triplette ad un messaggio precedentemente esistente.

C'è una pagina su wikipedia che copre in appena un po 'più in dettaglio . Non fatevi confondere, però, ciascuna tripletta è una descrizione "primo livello", di solito c'è alcuna nidificazione di elementi a TLV (anche se si potrebbe trovare un modo per farlo codificando triplette TLV nel V di un altro tag).

Altri suggerimenti

TLV è un modo per memorizzare dati per facilitare la rapida analisi di tali dati.

In genere, si legge il tipo (tag), la lunghezza e il valore e quindi inviare coloro riferimento a una funzione del processore. Questo funzioni del processore unica funzione sarà quella di tipo processo X. Poi, si legge il tipo successivo, la sua lunghezza e il valore e inviarlo al processore appropriata.

E 'tipicamente usato come un modo semplice per elaborare i dati senza un sacco di spese generali supplementari.

Usiamo ancora TLV per la formattazione dei dati. E se vogliamo inviare i dati al ricevitore, prepariamo un pacchetto TLV che contengono dati Tag-Length-Value. Per esempio:

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

quando vogliamo inviarlo abbiamo concatenare questo 3 dati fila come DF 82 0A 03 30 31 32. pacchetti di dati possono contenere un sacco di dati del genere.

Quando ricevitore farlo, l'analisi pacchetto è molto semplice e il ricevitore in grado di analizzare tutti i dati senza problemi.

I dati di analisi;

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

DF 82 0A e DF 82 0B sono pre-definiti (tipo di valore (BCD, HEX, ASCII)) tag. Quando sono arrivati ??i dati, in un ciclo, in primo luogo parser cercherà tag (es. DF 82 0A) e uno più byte (dati LEN). Sarà anche leggere i dati byte fino a len.

TLV si riferisce alla codifica di valori in Tipo-Lunghezza-Valore trio di, e questo forma più generale è documentato su wikipedia .

In alcuni di (ad esempio EMV) contesto TLV riferisce alla X.690 più preciso che è anche documentato su wikipedia .

TLV presenta i seguenti vantaggi:

  • formato di codifica relativamente compatto
  • relativamente semplice da analizzare (ho scritto un parser X.690 base in un paio d'ore)
  • Il X.690 TLV ha il supporto per i tipi nidificati (questa parte è un po 'più complicato da analizzare, ma da quello che posso dire non è richiesto per EMV)

più grande svantaggio di TLV è che non è direttamente leggibile. Nota se i dati vengono convertiti in esadecimale è solo moderatamente difficile da leggere.

Credo che ciò che si fa riferimento è chiamato Tipo Lunghezza Valore , e c'è una wikipedia pagina per esso. Speranza che aiuta.

TLV: tag - lunghezza - valore

Esempio: 045002124354

Se abbiamo preso come esempio, che nella configurazione: 045 è il significato della
        numero vincente in un TV Show modo: il valore del numero vincente è: 12

  • tag : Ricerca del tag che è: 045
  • LENGTH : lunghezza ad esempio è il 3 posizione in modo: 002
  • Valore : ora il valore è: 12 (su 2 posizioni)

TLV è utile per creare protocolli di comunicazione. Si utilizza tag , la lunghezza, il valore per memorizzare le informazioni. Si può vedere molto bellissima L'implementazione (penso che il migliore) su github .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top