问题:如何在kaitai中写`010 switch and if`
Posted
技术标签:
【中文标题】问题:如何在kaitai中写`010 switch and if`【英文标题】:Question: How to write `010 switch and if` in kaitai 【发布时间】:2021-02-10 20:54:43 【问题描述】:我非常喜欢 kaitai 结构,我需要在 kaitai 中重写 010 二进制模板之一。我在我的 010 模板中发现了类似于以下的结构,我想知道如何在 kaitai 中处理它。
例如:1
typedef struct
WORD MCC_length;
if(MCC_length>3)
UBYTE MCC[3];
else if(MCC_length>0)
UBYTE MCC[MCC_length];
else if(MCC_length==0)
UBYTE MCC[3];
WORD MNC_length;
if(MNC_length>3)
UBYTE MNC[3];
else if(MNC_length>0)
UBYTE MNC[MNC_length];
else if(MNC_length==0)
UBYTE MNC[3];
PLMN_Format_2;
例如:2
typedef struct
UBYTE M_ID;
UBYTE Cell_1;
UBYTE Cell_2;
UBYTE Cell_3;
UBYTE T_Count;
if(T_Count>0)
INTER_MR_Cell cell_info[T_Count]<optimize=false>;
UBYTE Location_ID;
if(Location_ID == 1)
UBYTE ShapeID;
switch(ShapeID)
case 0:
UNDEFINED_INFO Undefined_Info;
break;
case 1:
Type_Point_Info1 Point_Info1;
break;
case 2:
Type_Point_Info2 Point_Info2;
break;
case 3:
Type_Point_Info3 Point_Info3;
break;
case 4:
Type_Loc_Info1 Loc_Info1;
break;
case 5:
Type_Loc_Info2 Loc_Info2;
break;
PERIOD_MDT;
【问题讨论】:
【参考方案1】:我在 kaitai git 中问过同样的问题,他们提供了非常详细的解释说明如何做到这一点。 Please refer this
【讨论】:
以上是关于问题:如何在kaitai中写`010 switch and if`的主要内容,如果未能解决你的问题,请参考以下文章
kaitai struct 中实现了哪些解析器技术?它是不是实现回溯?