2012-03-09 2 views
1

j'ai besoin de décoder les données binaires (C#) représentés par des structures comme cet exemple:Décoder les messages de protocole binaire non codées par le même outil

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

Et l'exemple des données binaires: 0x040000000201 où id = 4, type = 2, valide = vrai; Puis-je utiliser Thrift, Protocol Buffers ou tout autre outil pour décoder une donnée binaire qui n'a pas été codée par le même outil? Pouvez-vous donner des suggestions sur comment faire?

Merci

+0

Découvrez la réponse sélectionnée à http://stackoverflow.com/questions/2480116/marshalling-a-big-endian-byte-collection-into-a-struct-in-order-to-pull-out-valu – Matthew

Répondre

2

Non, fondamentalement. Ils sont conçus comme des outils de sérialisation génériques indépendants de la plate-forme, chacun suivant un protocole prédéfini (format filaire), ce qui signifie que l'utilisateur standard n'a généralement pas besoin de savoir à quoi ressemblent les données - c'est le travail de l'outil pour résumer cela.

Dans votre cas, le format de fil est prédéfini et il est peu probable qu'il soit semblable à un tel outil. Vous aurez besoin d'un outil plus spécifique vous permettant de spécifier des détails de protocole très précis, ou vous devrez écrire du code pour sérialiser/désérialiser manuellement.

En fin de compte, il n'est pas différent de demander "puis-je utiliser JavaScriptSerializer pour lire mon document XML?". À quoi la réponse est simplement: "non, JavaScriptSerializer expédie JSON et n'a pas la capacité de spécifier ou d'interpréter les détails XML".

Questions connexes