C

时间:2017-04-25 19:49:42

标签: c lookup-tables

我有500帧,我已经将每帧的长度存储在一个数组中,因为帧是按升序排列的。

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

此处帧1的长度为23个字节,帧2的长度为34个字节。 现在,当我被请求带有标题4的帧时,我将不得不用带有标题7的帧回复,带有标题8的帧将需要带有标题60的回复帧。该共同关系是常量,标题4帧将始终回复标题7帧。所以我需要一个查找表的实现。我打算使用多维数组来实现它。虽然有更好的方法来实现这个吗?

1 个答案:

答案 0 :(得分: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]];