【发布时间】:2017-06-05 04:15:49
【问题描述】:
我正在寻找一种技术规范方法来指定二进制数据。 我正在寻找类似于 XML Schema Description (XSD) 之类的东西。
目的是使用该格式生成可以正确解释二进制序列的程序;即编程语言绑定。这就像有许多 XSD 框架可以生成 OO 编程语言中的类,这些类可以表示 XML 数据、解析和序列化。 尽管如此,该方法仍需要具有高度的人类可读性,以便领域专家可以指定和解释此文本规范。
到目前为止,我只发现了人类可读的语法。在许多标准中都使用了 ASCII-Art,例如 RFCs 或 AMQP,如下所示:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
TCP Header Format
但是,这几乎不是机器可读的。
有时我在Extended Backus Naur Form 中看到了规范。然而,这对于技术领域的人来说并不能真正阅读,而且我并不真正了解建议这种方法来指定二进制数据的标准。
谁能提出合适的方法/标准?
干杯, 豪克
【问题讨论】:
-
ASN.1 有时用于指定二进制格式。但是,如果您有无法阅读(或学会阅读)EBNF 的“技术”人员,那么他们对 ASN.1 感到满意的机会似乎很小。 (如果他们不知道如何阅读上下文无关的语法,他们怎么能成为技术人员?我深表同情。)
标签: xml xsd binary specifications requirements