2008-12-15 70 views
2

如果你有一个被描述为C结构的二进制文件格式(或数据包格式),是否有任何程序可以解析结构并将其转换为你的协议的整洁文档?用于记录C结构的程序?

该结构当然会包含数组,其他结构等,以描述格式。该文件很可能需要包括像包装,字节序等

回答

2

Doxygen是一种常用的DOC umentation 爱适易。但是,如果您想获得有用的文档,您可能必须使用文档注释标记结构定义。

+0

尽管Doxygen更适合提供浏览代码的超文本方式而不是创建文档?从视觉上来说,doxygen的输出结果看起来与您输入的C头非常相似? – OJW 2008-12-15 22:13:32

5

也许你应该以不同的方式思考这个问题。

“我可以为我的数据包创建一个文档格式,我可以生成一个C结构?”

考虑使用XML来定义数据包结构并添加注释等元素。它西港岛线是相当容易写一个简单的程序,把它改造成一个实际的C结构

+0

至少给出一个理由。在没有评论的情况下对合法答案进行投票是粗鲁无礼的。如果你认为我的决定是错误的,那么你应该至少有一句话可以说出来。 – JaredPar 2008-12-15 21:50:47

+0

嗯,我不知道其他人,但我投票给你。这是正确的路要走。描述,生成。一个描述可以用来生成多种代码和多种文档。不过,我不同意写这个发生器很简单。值得?是。简单?如果你幸运的话。 – 2008-12-15 22:10:37

+0

是的,你可以从一个不同的格式开始(你自己设计的XML文件,yEd图形等等,而不是C头文件),但是这真的可以修改这个问题吗? 我对现在使用的工具更感兴趣,而不是新软件项目的想法。 – OJW 2008-12-15 22:19:55

0

为JaredPar说,这个问题的另一种措辞是:

“什么是用于描述二元结构的好方法?

例如像ABNF但能够做到位压缩,字节序等

最好有将产生不只是文档现有的工具,但C头,unpackstruct p atterns,并根据描述”

0

当然验证工具,如果这样的事情存在,它会被用来编写protocol dissectors 为Wireshark的 - 事实上,每个解剖是用C语言实现的暗示,它很难表达二进制格式一个通用的方法

1

如果你了解Perl,你可以尝试用占道打:

https://www.rodhughes.com/perl/advprog/examples/Jeeves/

(此源存在;我认为这是可以使用的。 ;))

我想解决一些类似于你需要的东西:解析器的结构化二进制数据。我期待Jeeves从meta格式输出C++中的解析类。 Jeeves的默认解析器允许为类定义的每个成员添加额外的标签。这可以让你自动在你的类的注释中包含关于字节顺序,对齐等的信息(当然,在你的代码中实现它们)。