1

ASN.1 BER バイナリを CSV テキストに変換するためのコードを書いています。出力テキスト ファイルに書き込まれるすべての ASN タイプの (かなり大きな) 構造があります。これで、通常の方法を使用して要素を 1 つずつ書き込むことができます (出力ファイルはプレーン テキストでなければならないため) が、これを処理する賢い方法を探しています。これを行うためのヒント/コツや提案が得られることを願っています。

サンプル構造 (実際の構造はもっと大きい):

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

Write a program that parses a struct declaration, and generates a print function.

于 2012-06-06T10:12:46.520 に答える
0

一部の市販の ASN.1 ツール ( OSS Nokalvaのものなど) には、デコードされたメッセージを出力する通常の機能では不十分な場合に、 fprintf() 関数を独自のものに置き換える機能があります。OSS ASN.1 ツールの無料試用版をダウンロードして、それが機能するかどうかを確認してください。

于 2012-06-06T20:44:53.100 に答える