Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Binary 有没有为任意二进制格式创建模式语言?_Binary - Fatal编程技术网

Binary 有没有为任意二进制格式创建模式语言?

Binary 有没有为任意二进制格式创建模式语言?,binary,Binary,XML有很多好处。它是机器可读和人可读的,它有一个标准化的格式,它是非常多功能 它也有一些缺点。这是冗长的,不是一种传输大量数据的非常有效的方法 XML最有用的方面之一是模式语言。使用模式,您可以用任何现代编程语言生成源代码来读取xml格式,而无需像大多数其他文件格式那样进行繁琐的手工编码 这让我开始思考是否存在一种用于任意二进制文件格式的模式语言,如果不存在,是否值得一试 以防我不清楚。我问的是一种语言,其目的是定义字节偏移量、字段和记录长度、定界符等,可以对其进行解析,生成代码,读取符合该规

XML有很多好处。它是机器可读和人可读的,它有一个标准化的格式,它是非常多功能

它也有一些缺点。这是冗长的,不是一种传输大量数据的非常有效的方法

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

这让我开始思考是否存在一种用于任意二进制文件格式的模式语言,如果不存在,是否值得一试

以防我不清楚。我问的是一种语言,其目的是定义字节偏移量、字段和记录长度、定界符等,可以对其进行解析,生成代码,读取符合该规范的文件格式


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

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

字节偏移量自COBOL以来一直存在。EDI是一个众所周知的、久经考验的、真正的协议,它正是这样做的


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

是的,有几个人尝试过这样做


一个这样的尝试是。另一个是。不过,我不确定这两种语言到底有多实用。

简言之,没有。除非将编程语言计算为“模式语言”。不管模式如何,XML都是非常结构化的。二进制格式可以是任何格式。考虑旧的MS Office格式,它本质上是运行时使用的原始数据结构的内存转储。如果您允许使用编程语言,那么您可以并且确实可以在其中创建解析器:-)压缩的二进制文件:zip、jpeg、WebM呢?模式语言如何以及为什么要包含这些类型的内容?

Project Epidal.BeeSchema似乎适合您的需求


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


“为二进制结构开发解析器”

xtype是我开发的一种新的通用二进制数据语言,它还涵盖了XML的典型用法:
这里应该提到的一种类似格式是UBJSON,这是一种用于类似JSON结构的高效二进制格式:

当然,某些二进制格式可能非常复杂,无法使用声明性语言进行正式定义。对于某些xml格式也是如此,原因对我来说很明显,因此您可以打开文件,查看可以在不破坏文件的情况下处理的重要内容。例如,元数据。此外,zip是一种定义良好的格式。编辑器“010编辑器”提供了OP在此寻找的内容的实现,并附带了一些示例脚本,包括解析zip文件的脚本。还有二进制XML描述语言BinX:“指定字节偏移量、字段和记录长度、分隔符等不是“任意的”。“否,但是这种规范定义的文件格式是不正确的。也许“通用”是一个更好的选择。如果您指的是X12标准中指定的EDI,那么我想找一些不那么官僚主义的东西。任何人都可以创建和使用xml模式,而无需将其提交给标准机构审批,但您必须将其传达给消费者。即使内置了元数据,也不意味着它总是清晰易懂的。每个使用基于记录的协议的公司都可以自由创建一个协议,而无需将其提交给标准机构;他们必须向消费者提供线索,这样他们就不必猜测了。