2009-07-17 8 views
5

Je travaille sur une application TCP qui traite les messages bitpackés, ce qui signifie: Les messages transmis/reçus ne sont pas alignés en octets. Par exemple 3 bits représentent le champ 1, où 19 bits peuvent représenter le champ 2. Ma question est, est-ce que quelqu'un connaît une bibliothèque C# qui peut prendre un ensemble d'octets et définir/obtenir une plage arbitraire de bits dans ces octets? J'ai vu & créé des utilitaires similaires en C/C++ mais j'ai besoin d'une solution 100% C# et je ne veux pas réinventer la roue à nouveau.Gestion des données empaquetées en utilisant C#

J'ai regardé la classe BitArray, mais cela ne permet pas de référencer des plages de bits arbitraires.

Répondre

2

Je ne connais pas de classes bcl qui fournissent ce que vous voulez. Mais vous pouvez utiliser des opérations au niveau du bit (shift, et, ou, ...) pour extraire les champs de votre intérêt.

Par exemple, pour obtenir un champ à partir de 2 bits avec une taille de 5 bits utiliser:

int extract = (source & 0x7C) >> 2; 
+0

C'est la méthode que j'utilise dans mes implémentations C++ actuelles. J'espérais ne pas devoir porter l'implémentation en C# et utiliser une bibliothèque tierce. Je suis intéressé par une bibliothèque C# lisse pour accomplir ceci. Je ne voulais simplement pas "réinventer la roue" à nouveau. – nathan

Questions connexes