PER(对齐或未对齐)是否可用于描述任意八位字节序列的编码/解码



我目前正在阅读 ASN.1 的规范和各种编码规则,我知道其中大多数都是为了首先设计 PDU 语义,然后使用 *ER 对其进行编码,使您的 PDU "可传输"(可通过给定传输交付)

所有编码规则似乎都将类型标记到生成的八位字节序列中,但 PER 除外。

所以我的问题是:给定现有的 PDU 格式(例如 24 位 Windows BMP 文件),是否可以使用 ASN.1 来描述(键入和命名)字段并使用 PER 从文件中获取结构化数据?

如果是这样,这种方法的局限性是什么?(像字节序,支持"选择器"字段,...

Laurent。

可能吗?这是值得商榷的。明智吗?井。。。正如圣保罗在给哥林多人的信中所说,所有的事情都是合法的,但并非所有的事情都是有益的。

通常,很难将现有文件格式硬塞到 PER 中。这并非不可能,但除非文件格式具有固定长度的字段(或大小限制),否则您将很难过。

原因是 PER 使用带有前导码的位打包格式来涵盖可选和默认元素,并在需要时涵盖长度信息。可以在此处找到一个示例。(披露:我曾经为Objective Systems工作,其博客在链接中被引用。

查看维基百科关于BMP文件结构的条目,似乎有一些可选和半可选(?)元素的存在没有被类似于PER前导码的任何内容指示。这意味着标准 PER 编码与 BMP 格式不兼容。

您可以做的是尝试通过 ASN.1 的各个部分来表示 BMP 结构的每个部分,使用首选工具生成组件,然后使用自定义逻辑将它们链接在一起。

关于字节序,ASN.1旨在通过标准化线路上的编码来解决问题。通常,工具(运行时库和代码生成器)将处理您需要担心的任何内容。

对于我的钱来说,除非你已经有一些经验(以及可以使用这种方法的代码库),否则可能不值得在这里追求 ASN.1 解决方案。最好使用所选编程语言中的现有图像库。

最新更新