Gestion des données bit emballé à l'aide de C #
-
16-09-2019 - |
Question
Je travaille sur une application TCP qui traite les messages bitpacked, ce qui signifie: Les messages transmis / reçus ne sont pas alignés octet. 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 sait d'une bibliothèque C # qui peut prendre un ensemble d'octets et set / get une gamme arbitraire de bits dans les octets? Je l'ai vu et créé des utilitaires similaires en C / C ++, mais je besoin d'une solution 100% C # et je ne veux pas réinventer la roue à nouveau.
Je l'ai regardé la classe BitArray, mais il ne permet pas de référencer les gammes arbitraires de bits.
La solution
Consultez cette solution CodeProject - il est open source géré BitStream classe de C # appelable.
Autres conseils
Je ne suis pas au courant de toutes les classes bcl qui offrent ce que vous voulez. Mais vous pouvez utiliser les opérations (changement, au niveau du bit 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;