2012-03-09 154 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細節」。