有没有(有没有)为任意二进制格式创建模式语言的任何努力?

时间:2011-01-12 15:32:04

标签: binary

XML有很多好处。它既具有机器可读性,又具有人类可读性,它具有标准化的格式,并且具有非常多样化的功能。

它也有一些缺点。它冗长而且不是传输大量数据的有效方法。

XML最有用的方面之一是模式语言。使用模式,您可以使用任何现代编程语言生成源代码,以读取xml格式,而无需通常伴随大多数其他文件格式的繁琐的手工编码过程。

这让我想到是否存在任意二进制文件格式的模式语言,如果不存在,是否值得一试?

以防万一我不清楚。我问的是一种语言,其目的是定义字节偏移,字段和记录长度,分隔符等,可以解析它们以生成能够读取符合该规范的文件格式的代码。

我怀疑我是第一个提出这样一个想法的人,所以如果你知道任何项目或工作组已经或正在寻求这个领域,我将不胜感激。

6 个答案:

答案 0 :(得分:2)

是的,有几个人试图这样做。

其中一次尝试是Binary Format Description。另一个是Data Format Description Language。不过,我不确定这两者到底有多实用。

答案 1 :(得分:1)

xtype是我开发的一种新的通用二进制数据语言,还介绍了XML的典型用法:https://github.com/bitagoras/xtype/ 此处应提及的一种类似格式是UBJSON,这是一种用于JSON类结构的高效二进制格式:https://github.com/ubjson/universal-binary-json

答案 2 :(得分:0)

“模式”和“任意”是矛盾的。指定字节偏移,字段和记录长度,分隔符等不是“任意的”。

自COBOL以来,字节偏移已经存在。 EDI是一个众所周知的,经过验证的真正的协议,正是这样做的。

WebMethods,一个EDI工具,内置了一个非常好的EDI解析器。

答案 3 :(得分:0)

简而言之,没有。除非您将编程语言视为“模式语言”。无论架构如何,XML都是非常结构化的。二进制格式绝对是任何东西。考虑旧的MS office格式,它实际上是运行时使用的原始数据结构的内存转储。如果您允许编程语言,那么您可以 - 并且确实 - 创建一个解析器:-)压缩二进制文件怎么样:zip,jpeg,WebM?模式语言如何以及为什么要包含这些类型的东西?

答案 4 :(得分:0)

项目Epidal.BeeSchema似乎符合您的要求。

https://github.com/Epidal/BeeSchema

答案 5 :(得分:0)

我知道这是一个老问题,但是在最近几年中,我感到Kaitai Struct已经成为最好的任意二进制模式描述选项之一,它产生解析代码的好处是巨大的。

https://kaitai.io/

“开发用于二进制结构的解析器”