2012-03-09 156 views
1

我需要解码通过像本实施例中的结构所表示的二进制数据(C#):解码二进制协议消息

struct Message 
{ 
    byte id; 
    int type; 
    bool valid; 
} 

和实施例的二进制数据:0x040000000201其中id = 4,类型= 2,valid = true;

我可以使用Thrift,Protocol Buffers或任何其他工具来解码未由相同工具编码的二进制数据吗? 你可以提供任何有关如何做到这一点?

谢谢

+0

查看所选答案http://stackoverflow.com/questions/2480116/marshalling-a-big-endian-byte-collection-into-a-struct-in-order-to-pull-out-valu – Matthew 2012-03-09 18:59:45

回答

2

没有,基本上是这样。它们被设计为独立于平台的通用序列化工具,每个工具都遵循预定义的协议(/ wire-format),这意味着:标准用户通常不需要知道或关心数据的外观 - 它是工具的工作把那个抽象掉。

在你的情况下,wire-format是预定义的,不太可能类似于任何这样的工具。您将需要一个更具体的工具,允许您指定非常细粒度的协议详细信息,或者您需要编写代码以手动序列化/反序列化。

最终,它不问“我可以使用JavaScriptSerializer来读取我的XML文档吗?”。答案很简单:“否; JavaScriptSerializer预计JSON并且无法指定或解释XML细节”。