2010-11-26 15 views
2

私はプロトコルアナライザを構築しています。私はC#を初めて使っています(Cと協力しています)。C#プロトコルアナライザの構造定義

私は、解析され、複数の構造体に埋め込まれなければならないバイトストリームを持っています。データは、各データに入り、その構造とサイズ(データは構造の配列でもよい)だけを決定することができます。私は構造体の一般的なデザインを出すのが難しいと思っています。構造体の入っているバイトをマップするだけでよいのです。 Cでは、void *を使用して、必要に応じてそれをキャストしてそれぞれの構造体に格納できるので、これは簡単です。誰もがそれを解決するために私たちを助けてくださいと類似ちゃったごめんなさい渡って来た場合

典型的なデータ構造は

 

Typedef struct DATA_PKT 
{ 
    intu16 choice; //this tells which one of the below union to use ! 
    intu16 length; 

    union 
    { 
    Data_Type_A DataA; 
    Data_Type_B DataB; 
    Data_Type_C DataC; 
    } 
} 

Typedef struct Data_Type_A 
{ 
    Ver_t version; 
    Params_t param; 
} 

Typedef struct Vert_t 
{ 
    Int Verlen; 
    VersData_t *versions;  //here starts versions info of length= Verlen 
} 

Typedef struct VersData_t 
{ 
    Int VerID; //we have a variety of version info. This id tells which version info 
    ANY_t ver; 
} 

Typedef struct ANY_t 
{ 
    Int len; 
    Char *data; 
} 

Typedef struct Params_t 
{ 
    Int Len;   //total length if the structure 
    Int ParamCount; // # of params present in this structure 
    Param_t *params 
} 

Typedef struct Param_t 
{ 
    Int ParamID; //we have a variety of param info. This id tells which param info 
    ANY_t param; 
} 

のようなものです。あなたが持っている場合は、コードサンプルを共有してください。

あなたの努力に感謝します。 について、 abhayadev s

答えて

0

あなたはblit可能な構造体(Layout:Sequentialで参照を含まない)を定義して、使用法のコードを使用して、cでの操作とよく似たポインタを扱うことができます。

また、リフレクションとBitConverterの組み合わせを使用することもできます。しかしそれはもう少し複雑です。

+0

ありがとうございましたが、あなたのコメントをうまく取得できませんでした。いくつかのサンプルを表示できますか? –

関連する問題