给定一个使用协议缓冲编码的
如果存在可以解析来自二进制文件的原始协议缓冲区字节流的现有工具-那将是很好的!另一种选择可能是使用ProtoBuf.NET类
Stream
或byte[]
,但不知道对象类型本身,我们如何打印消息的框架?使用案例是用于基于protobuf的IO调试,以进行根本原因分析。如果存在可以解析来自二进制文件的原始协议缓冲区字节流的现有工具-那将是很好的!另一种选择可能是使用ProtoBuf.NET类
ProtoReader()
继续运行,直到我们遇到错误,但是ProtoReader()的使用方法并不清楚。我从下面开始,但找不到有关如何使用ProtoReader
类实际执行此操作的良好文档。项目的源代码也不是很简单明了...因此希望得到一些提示/帮助。using (var fs = File.OpenRead(filePath))
{
using (var pr = new ProtoReader(fs, TypeModel.Create(), null))
{
// Use ProtoReader to march through the bytes
// Printing field number, type, size and payload values/bytes
}
}
protoc
?我找不到关于它的文档。我确实使用了--decode_raw
,但不清楚如何传递二进制数组(例如:.bin文件)... - user2925445protoc
错误。我以为可能是缺少某些格式或参数,但现在看来不是这样。算了,我就用ProtoBuf.NET代码吧。谢谢! - user2925445StartGroup
中显示的完全相同的代码,即StartSubItem
,WriteTree
,EndSubItem
。更正确的方法是将数据作为byte[]
(ProtoReader.AppendBytes
)获取,然后测试它是否可以分别解析为UTF-8字符串、子消息等。 - Marc Gravell