关于c#:解码不是由同一工具编码的二进制协议消息

Decoding binary protocol messages not encoded by the same tool

我需要解码由类似此示例的结构表示的二进制数据(C#):

1
2
3
4
5
6
struct Message
{
    byte id;
    int type;
    bool valid;
}

以及示例二进制数据:0x040000000201其中id = 4,type = 2,valid = true;

我可以使用Thrift,Protocol Buffers或任何其他工具来解码不是由同一工具编码的二进制数据吗?
您能提出任何建议吗?

谢谢


不,基本上。 它们被设计为独立于平台的通用序列化工具,每个工具均遵循预定义的协议(/有线格式),这意味着:标准用户通常不需要知道或关心数据的样子,这是该工具的职责 将其抽象化。

就您而言,有线格式是预定义的,不太可能与任何此类工具相似。 您将需要一个更特定的工具来允许您指定非常细粒度的协议详细信息,或者需要编写代码来手动进行序列化/反序列化。

最终,它与询问"我可以使用JavaScriptSerializer读取我的XML文档吗?"一样。 答案很简单:"否; JavaScriptSerializer使用JSON,并且无法指定或解释XML细节"。