2009-07-17 13 views
5

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

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

Respuesta

2

No conozco ninguna clase bcl que brinde lo que desea. Pero puede usar operaciones bit a bit (shift, y, o, ...) para extraer los campos que le interesan.

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

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

Este es el método que estoy usando en mis implementaciones actuales de C++. Esperaba no tener que portar la implementación a C# y podría usar una biblioteca de terceros. Estoy interesado en alguna biblioteca slick C# para lograr esto. Simplemente no quería "reinventar la rueda" de nuevo. – nathan

Cuestiones relacionadas