针对asn文件编解码工作,asn1c这个开源工具对c/c++的支持非常好。可以很方便的安装和使用,目前这个工具是开源的,最新版本是0.9.28,项目地址:github.com/vlm/asn1c。官方文档地址:Open Source ASN.1 Compiler: asn1c 0.9.28。
这个工具在linux上的安装很方便。
这个工具还有一个很方便的地方在于,它可以直接将asn文件转化为c语言项目所需要的的头文件和源文件。
下面通过一个简单的示例来演示如何通过asn1c这个工具来实现asn格式数据编解码。
1、准备asn文件:
RectangleTest DEFINITIONS ::= BEGIN
Rectangle ::= SEQUENCE {
height INTEGER,
width INTEGER
}
END
2、在该文件当前目录运行生成命令
asn1c -gen-PER *.asn
运行该命令,会在本目录下生成很多头文件和源代码文件。其中包含一个拥有main主函数的测试代码,一般我们不使用这个源代码来运行示例,自己编写一个。