2017-04-25 14 views
0

フレームが昇順に並んでいるため、各フレームの長さを配列に格納した500個のフレームがあります。Cでの辞書/ LUT実装

const char header_length = {23,34, 45, 12, 23,56,......,2,4}; 

ここで、フレーム1の長さは23バイト、フレーム2の長さは34バイトです。 ヘッダー4のフレームが要求されると、ヘッダー7のフレームで返信する必要があります。ヘッダー8のフレームは、ヘッダー60の返信フレームが必要です。ヘッダー4のフレームは常にヘッダー7に応答しますフレーム。だから私はここでテーブルの実装をルックアップする必要があります。私はこれを多次元配列を使って実装するつもりです。これを実装するより良い方法はありますか?

+2

最初の2つの文は意味があります。残りは...まあまあ、文脈から完全に外れています。 –

+0

RBツリーCの実装を見つけるだけです。 @EugeneSh。 – dtech

+0

考慮することを単純化するために、長さ23,34,45の4つのフレーム1,2,3,4があります。フレーム1を受信すると、フレーム2で応答します。フレーム3を受信すると、フレーム4で応答します。今は0と答えています。 LUTは、インデックス+ 1がフレーム番号である配列になります。位置1では、長さを格納し、位置2に応答フレームを格納します。したがって、4つのフレームの場合、辞書の実装は[23:2,34:0,45:4,12:0]のようになります。これが質問を簡素化することを願っています。 – CodeModeOn

答えて

0

上記のOPのコメントに基づいて回答しています。そうでない場合は、OPの質問だけで意味がありません。最大フレームサイズがNかなり小さくすることによって制限されると仮定すると

、単に、以下のよう

const char header_length[] = {23,34, 45, 12, 23,56,......,2,4}; 
const int to_be_replied[N+1] = {...,0,...,2,...,0,...,4,...}; /* fill remaining */ 
/* here are their positions  @12 @23 @34 @45 */ 

を別の配列を維持し、応答中に以下を使用する方がよいです。

int frame_num, reply_frame_num; 
frame_num = get_frame_number(); /* some function */ 
reply_frame_num = to_be_replied[header_length[frame_num]];