- 主题:有基于文本的描述二进制通信协议的格式或者语言吗?
嵌入式内部经常有定义传输介质为网络或者串口的通信协议
目前协议通常都是用excel表格保存的, 但是excel不方便比较不同版本, 不能合并
有没有基于文本的. 描述二进制格式协议的语言.用于规范文档?
--
FROM 27.17.118.*
pb?
【 在 hyperisnice () 的大作中提到: 】
: 嵌入式内部经常有定义传输介质为网络或者串口的通信协议
: 目前协议通常都是用excel表格保存的, 但是excel不方便比较不同版本, 不能合并
: 有没有基于文本的. 描述二进制格式协议的语言.用于规范文档?
--
FROM 124.78.220.*
【 在 greenonline (绿皮快车) 的大作中提到: 】
: pb?
Protobuf? 好主意啊。
转载不代表我喜欢txt:
The RTP header has the following format:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
https://tools.ietf.org/html/rfc3550
我觉得可以:
RTP header : V P XX CC M PT seq_num ts SSRC CSRC_list
;
V : bits(2)
;
CSRC_list : CSRC
| CSRC_list CSRC
;
叫尾递归还是右递归来着,左递归好还是右递归好来着。编译原理里讲的。搜BNF.
可能CSRC* 或者 CSRC+, CSRC{1,10} 这样山寨下够用了。
要涂脂抹粉的话,还有ASN.1(Abstract Syntax Notation One) 是一套标准,是描述数据的表示、编码、传输、解码的灵活的记法。它提供了一套正式、无歧义和精确的规则以描述独立于特定计算机硬件的对象结构。
ASN.1是ISO和ITU-T的联合标准,最初是1984年的CCITT X.409:1984的一部分。由于其广泛应用,1988年ASN.1移到独立标准X.208,1995年进行全面修订后变成X.680系列标准。
H.264协议里是直接给一段C伪码。
https://www.jianshu.com/p/a2dc69c8bf70
C语言的位域有下列缺点:
1. 它不能满足我们的创造欲和命名欲 :-)
2. 好像位域里不能有别的结构成员
3. “m 、ch、p 的长度分别是 4、1、4 个字节,共计占用 9 个字节内存,为什么在 VC/VS 下的输出结果却是 12 呢?”
http://c.biancheng.net/cpp/html/102.html
要是明确没有packing和位的存放顺序就好了
--
修改:billybear04 FROM 106.121.66.*
FROM 106.121.160.*