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.

Était-ce utile?

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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top