1

我正在编写一段代码,用于将 ASN.1 BER 二进制转换为 CSV 文本。我的所有 ASN 类型都有(相当大的)结构,这些结构要写入输出文本文件。现在我可以使用正常的方法一个一个地编写元素(因为输出文件必须是纯文本),但我正在寻找一些聪明的方法来处理这个问题。我希望我能得到一些提示/技巧和建议来做到这一点。

样本结构(实际结构要大得多):

typedef struct
{
    unsigned    short   intrecordType;
    unsigned    long    long    int  callingNumber;
    unsigned    long    long    int  calledNumber;
    char recordingEntity[7];
    char mscIncomingTKGP[4];
    char mscOutgoingTKGP[4];
    char seizureTime[9];
    char answerTime[9];
    char releaseTime[9]
    struct 
    {
        int gsm0408Cause;
        int gsm0902MapErrorValue;
        int ccittQ767Cause;
        int networkSpecificCause;
        int manufacturerSpecificCause;
    } diagnostics;
    unsigned    long    long    int  callReference;
    int  sequenceNumber;
    int  lastLongPartInd;
    int  recordExtensions;
    char  exchangeIdentity[MAX_IA5STRING_SIZE];
} IncGatewayRec;

有 33 个这样的结构(每个结构大约 60-70 个元素)及其相应的用于存储标志的结构,注意哪些字段已填充,哪些未填充(相同的结构,只有unsigned short int用于存储标志的所有数据类型)

提前致谢。:)

4

2 回答 2

1

编写一个解析结构声明并生成打印函数的程序。

于 2012-06-06T10:12:46.520 回答
0

如果打印解码消息的常规功能不足以满足您的需求,一些商业 ASN.1 工具(例如来自OSS Nokalva的工具)可以让您将 fprintf() 函数替换为您自己的功能。考虑下载 OSS ASN.1 工具的免费试用版,看看它是否适合您。

于 2012-06-06T20:44:53.100 回答