0

X.690 エンコーディングに基づいて、データ構造内に存在するパラメータをエンコードする必要があります。私の構造は次のとおりです。

struct Data_Struct
{
   parameter1
   parameter2
   parameter3
}

これらのパラメータの一部またはすべてが有効なデータを持っている可能性がありparameter1ますparameter3。次に、 TLVエンコーディングのみparameter1を使用してエンコードすることになっています。parameter3これに従うには、一連の手順に従う必要がありますか。お気に入り、

Check whether parameter 1 is present
    If present, find the tag of the parameter from a lookup table and encode it
Check whether parameter 2 is present
    If present, find the tag of the parameter from a lookup table and encode it
Check whether parameter 3 is present
    If present, find the tag of the parameter from a lookup table and encode it
  • 手順が繰り返されるため、モジュール化できますか?
  • それを行うための最良の方法は何ですか?
  • パラメータに順番にアクセスする方法はありますか?
  • パラメータとそのタグの間に関係を持たせるにはどうすればよいですか?

値の長さは可変です。

4

1 に答える 1

0

のように、メンバーとタグのペアを保持するテーブルを作成する必要があります{&Data_Struct::parameter1, TagForParam1}。コンパイラはそのタグを推測できないため、これは避けられません。

また、「空」または「有効なデータ」と見なすものを定義する必要があります。種類にもよるんだろうけど。たとえば+INF、有効な float 値ですか? したがって、オーバーロードされた関数を追加しますbool IsValid(T)

これで、テーブルをウォークスルーし、各パラメーターを取得し、有効かどうかをチェックして、出力ストリームに書き込む汎用ルーチンを作成できるようになりました。

ここで少し難しいのは、 の型が;&Data_Struct::parameter1と異なる場合があることです。&Data_Struct::parameter2したがって、テーブルはラッパー、基本クラスへのポインター、または同様のものを介して保持する必要があります。

于 2013-02-14T09:12:06.223 に答える