0

我非常喜欢 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;
4

1 回答 1

0

我在 kaitai git 中问过同样的问题,他们对如何做到这一点提供了非常详细的解释。请参考这里

于 2021-02-10T22:19:23.723 回答