Pregunta

Estoy trabajando en una aplicación TCP basado en que procesa los mensajes bitpacked, lo que significa: Los mensajes transmitidos / recibidos no están alineados en bytes. Por ejemplo 3 bits representan el campo 1, donde 19 bits pueden representar campo 2. Mi pregunta es, ¿alguien sabe de una biblioteca de C # que puede tomar un conjunto de bytes y set / get un rango arbitrario de bits dentro de esos bytes? He visto y creado utilidades similares en C / C ++, pero necesito una solución 100% de C # y no quiero volver a inventar la rueda de nuevo.

He mirado en la clase BitArray, pero no permite hacer referencia a rangos arbitrarios de bits.

¿Fue útil?

Solución

esta solución CodeProject - es una fuente abierta logró BitStream clase puede llamar desde C #.

Otros consejos

No estoy al tanto de ninguna clase bcl que proporcionan lo que quieres. Pero se puede usar operaciones bit a bit (desplazamiento, y, o, ...) para extraer los campos de su interés.

Por ejemplo, para obtener un campo a partir de bit 2 con un tamaño de 5 bits usar:

int extract = (source & 0x7C) >> 2;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top