【问题标题】:Decoding binary protocol messages not encoded by the same tool解码不是由同一工具编码的二进制协议消息
【发布时间】:2012-03-27 04:47:24
【问题描述】:
我需要解码由如下结构表示的二进制数据 (C#):
struct Message
{
byte id;
int type;
bool valid;
}
以及示例二进制数据:0x040000000201 where id=4, type=2, valid=true;
我可以使用 Thrift、Protocol Buffers 或任何其他工具来解码不是由同一工具编码的二进制数据吗?
你能就如何做到这一点给出任何建议吗?
谢谢
【问题讨论】:
标签:
c#
protocol-buffers
decoding
decoder
【解决方案1】:
不,基本上。它们被设计为独立于平台的通用序列化工具,每个都遵循预定义的协议(/wire-format),这意味着:标准用户通常不需要知道或关心数据的样子——这是工具的工作把它抽象出来。
在您的情况下,有线格式是预定义的,不太可能与任何此类工具相似。您将需要一个更具体的工具来允许您指定非常细粒度的协议细节,或者您需要编写代码来手动序列化/反序列化。
最终这与询问“我可以使用 JavaScriptSerializer 来读取我的 XML 文档吗?”没有什么不同。答案很简单:“不;JavaScriptSerializer 期望 JSON 并且无法指定或解释 XML 细节”。