30

TLVとは何ですか?

if / elseの代わりにフック(関数)をコードに入れるには?

異なるプラットフォームで、コード内の異なる場所で1つのコードを実行している場合、TLV関数フックを配置して、使用しているプラ​​ットフォームを識別し、それに応じて実行できますか?またはそのようなもの?

利点はよりクリーンなコードになり得ますか?メンテナンスは簡単ですか?新しいプラットフォームが追加された場合、ソースコードではなく、TLVコードのみを変更する必要がありますか?

私はここで完全に間違っているかもしれません。

4

7 に答える 7

39

TLVは、タグ長値エンコーディングです。多くの場合、元の名前であるtype-length-valueで参照する方が適切です。

最初のフィールドは処理中のデータの「タイプ」であり、2番目のフィールドは値の「長さ」を指定します。3番目のフィールドには「タイプ」の値を表す「長さ」のデータ量が含まれます。

既存のメッセージにさらにトリプレットを追加することにより、同じメッセージで複数のデータを送信できます。

ウィキペディアにもう少し詳しく説明しているページがあります。ただし、混乱しないでください。各トリプレットは「トップレベル」の説明であり、通常、TLVにはアイテムのネストはありません(ただし、別のタグのVでTLVトリプレットをエンコードすることでそうする方法を考え出すことができます)。

于 2010-12-10T20:59:41.257 に答える
15

TLVは、データを保存して、そのデータの迅速な解析を容易にする方法です。

通常、タイプ(タグ)、長さ、および値を読み取り、それらのデータをプロセッサ関数に送信します。このプロセッサの機能は、タイプXを処理することだけが機能します。次に、次のタイプ、その長さと値を読み取り、適切なプロセッサに送信します。

これは通常、余分なオーバーヘッドをあまりかけずにデータを処理する簡単な方法として使用されます。

于 2010-12-10T20:53:56.270 に答える
11

データのフォーマットには引き続きTLVを使用します。また、受信者にデータを送信する場合は、 Tag-Length-Valueデータを含む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データが到着すると、ループ内で、最初にパーサーがタグ(つまり)ともう1バイト(データ)を探します。また、長さまでのデータバイトを読み取ります。

于 2014-11-07T07:32:50.480 に答える
4

TLVは、Type-Length-Valueトリオのエンコーディング値を指します。このより一般的な形式はWikiPediaに記載されています。

一部のコンテキスト(EMVなど)では、TLVはより具体的なX.690を指し、これはWikiPediaにも記載されています。

TLVには次の利点があります。

  • 比較的コンパクトなエンコード形式
  • 解析は比較的簡単です(基本的なX.690パーサーを数時間で作成しました)
  • X.690 TLVはネストされたタイプをサポートしています(この部分は解析が少し複雑ですが、私が知る限り、EMVには必要ありません)

TLVの最大の欠点は、人間が直接読み取れないことです。ただし、データが16進数に変換された場合、読み取るのは適度に困難であることに注意してください。

于 2013-03-20T03:15:59.060 に答える
1

あなたが参照しているのはTypeLengthValueと呼ばれていると思いますが その ためのウィキペディアのページあります。お役に立てば幸いです。

于 2010-12-10T20:52:33.423 に答える
1

TLV:タグ-長さ-値

例:045002124354

例として、構成で:045はテレビ番組の当選番号の意味であるため、
当選番号の値は:12です。

  • TAG :045であるタグの検索
  • さ:たとえば長さは3の位置にあるので、:002
  • VALUE :値は:12(2ポジション)
于 2016-12-16T17:52:43.487 に答える
0

TLVは、通信プロトコルを作成するのに役立ちます。タグ、長さ、値を使用して情報を保存します。githubで非常に美しい実装(私は最高だと思います)を見ることができます。

于 2018-02-23T19:01:28.420 に答える