我目前正在阅读ASN.1的规范和各种编码规则,我了解其中大部分是为了首先设计PDU语义然后使用* ER对其进行编码来制作PDU"可运输" (通过特定的运输方式交付)
除了PER。
之外,所有编码规则似乎都将类型标记为生成的八位字节序列所以我的问题是:给定一个现有的PDU格式(例如24位Windows BMP文件),是否可以使用ASN.1来描述(键入和命名)字段并使用PER从中获取结构化数据文件?
如果是这样,这种方法的局限性是什么? (如字节顺序,支持"选择器"字段,......)
答案 0 :(得分:0)
劳伦。
有可能吗?这是值得商榷的。这是明智的吗?嗯......正如圣保罗在写给哥林多人的信中所说,一切都是合法的,但并非一切都有用。
通常,很难将现有的文件格式转换为PER。这并非不可能,但除非文件的格式具有固定长度的字段(或大小限制),否则您将遇到困难。
原因是因为PER使用带有前导码的比特打包格式来覆盖可选和默认元素,并在需要时使用长度信息。 An example can be found here.(披露:我以前曾经为Objective Systems工作,其博客在链接中被引用。)
查看Wikipedia entry on the BMP file structure,似乎有一些可选和半可选(?)元素,其存在不是由类似PER前导码的任何内容指示的。这意味着标准PER编码与BMP格式不兼容。
您可以做的是尝试通过各个ASN.1来表示每个BMP结构,使用您首选的工具生成组件,然后使用自定义逻辑将它们链接在一起。
关于字节序,ASN.1旨在通过在线上标准化编码来解决问题。通常,工具运行时库和代码生成器将处理您需要担心的任何内容。
对于我的钱,除非你已经有一些使用它的经验(以及可以使用这种方法的代码库),否则在这里可能不值得追求ASN.1解决方案。您可能最好选择使用您选择的编程语言中的现有图像库。