【问题标题】:Some intelligent way to dump large structs to text file将大型结构转储到文本文件的一些智能方法
【发布时间】:2012-06-06 10:08:40
【问题描述】:

我正在编写一段代码,用于将 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 个元素)及其相应的用于存储标志的结构,注意哪些字段已填充,哪些未填充(相同的结构,只有 @987654322 的所有数据类型@ 存储标志)

提前致谢。 :)

【问题讨论】:

  • 文本文件的用途是什么?稍后被另一个程序重新读取,成为人类可读的,还是什么?
  • 被另一个程序重读。实际上,它的意思是使用 Fastload 或 Parallel Transporter 实用程序将其加载到 Teradata 数据库中,它们都不支持 ASN.1 BER。

标签: c file struct structure asn.1


【解决方案1】:

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

【讨论】:

  • 嗯,这将是非常通用的,但确实非常有用。谢谢你的想法.. :)
【解决方案2】:

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

【讨论】:

  • 我已经实现了所有的 ASN.1 功能。事实上,我的问题是关于实现 fprintf() 替换我的函数的一些好方法的想法。
  • 如果您使用的是商业工具(例如来自 OSS 的工具),他们的技术支持会为您提供帮助。如果您使用的是免费的 ASN.1 工具,您可能需要编写自己的代码来处理此问题。
猜你喜欢
  • 2010-10-10
  • 2021-05-17
  • 1970-01-01
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多