You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为自定义方法生成UPER编码的ASN自动生成文件?附Trace-mgmt代码

生成UPER编码的ASN.1自动生成文件指南

工具选择

使用asn1c工具——这是生成C语言ASN.1编解码代码的常用工具,完美支持UPER编码格式。

操作步骤

  • 准备ASN.1定义文件
    把提供的ASN.1代码保存为trace-mgmt.asn文件,注意代码里TraceRecordType枚举中的...是ASN.1开放式枚举标记,若不需要扩展可直接删除,保留也符合语法规范。

  • 安装asn1c工具

    • Debian/Ubuntu系Linux:直接执行sudo apt-get install asn1c完成安装
    • 手动编译:克隆asn1c源码仓库,进入仓库目录后执行./configure && make && sudo make install完成编译安装
  • 执行生成命令
    打开终端,切换到trace-mgmt.asn所在目录,运行以下命令生成仅支持UPER编码的代码:

    asn1c -gen-UPER -no-gen-OER -no-gen-JER -out-dir ./generated trace-mgmt.asn
    

    参数说明:

    • -gen-UPER:指定生成UPER编码的编解码逻辑
    • -no-gen-OER/-no-gen-JER:禁用OER、JER等其他编码格式的代码生成,只保留UPER相关代码
    • -out-dir ./generated:将生成的文件输出到当前目录下的generated文件夹(可自行修改路径)
  • 重命名生成文件
    生成完成后,将默认命名的文件改成你需要的名称:

    • 把生成的.x文件(比如Trace-mgmt.x)重命名为jnt_asn.x
    • 把生成的.h文件(比如Trace-mgmt.h)重命名为jnt_asn.h
    • 把生成的类型数据库文件(比如asn_DEF_Trace-mgmt.c)重命名为jn_db.c

生成文件说明

  • jnt_asn.x:包含ASN.1类型的宏定义、编解码函数声明,是编解码入口的核心头文件
  • jnt_asn.h:对应ASN.1结构的C语言结构体定义,所有SEQUENCE、ENUMERATED等类型都在这里映射为C结构体
  • jn_db.c:ASN.1类型的数据库实现,包含类型描述符、编解码逻辑的核心代码

注意事项

  • 检查ASN.1语法:确保TraceRecordType中的...使用正确,若为固定枚举需删除该标记,避免语法错误
  • 编译代码时,需要链接asn1c的运行时库,示例编译命令:
    gcc -o your_app your_code.c generated/jnt_asn.c generated/jn_db.c -lasn1c
    
  • 尽量不要直接修改生成的代码,若需自定义行为,优先通过asn1c的命令行参数调整,防止后续重新生成时覆盖修改内容

内容的提问来源于stack exchange,提问作者Raghavendra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 05:19:54