Domanda

Sto lavorando su un'applicazione TCP based che elabora i messaggi bitpacked, il che significa: I messaggi trasmessi / ricevuti non sono allineati ai byte. Per esempio 3 bit rappresentano campo 1, dove 19 bit possono rappresentare campo 2. La mia domanda è, qualcuno sa di una libreria C # che può prendere una serie di byte e set / ottenere una gamma arbitraria di bit all'interno di tali byte? Ho visto e creato utility simili in C / C ++, ma ho bisogno di una soluzione 100% C # e io non voglio di re-inventare la ruota di nuovo.

Ho guardato la classe BitArray, ma non consente di riferimento intervalli arbitrari di bit.

È stato utile?

Soluzione

questa soluzione CodeProject - è un open source gestito BitStream classe richiamabile da C #.

Altri suggerimenti

Io non sono a conoscenza di tutte le classi BCL che forniscono ciò che si desidera. Ma è possibile utilizzare operazioni bit per bit (spostamento, AND, OR, ...) per estrarre i campi di vostro interesse.

Ad esempio, per ottenere un campo a partire dal bit 2 con una dimensione di 5 bit utilizzare:

int extract = (source & 0x7C) >> 2;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top