2011-04-27 14 views
9

Después de esforzarme para hacer que la clase .NET BitArray funcione para mis necesidades, decidí buscar una fuente abierta o comercial más robusta en la web. Para mi sorpresa, no puedo encontrar uno solo. Veo varias sugerencias de métodos de extensión o formas de evitar los límites de la funcionalidad de BitArray, pero nada parecido a un reemplazo de BitArray.¿Alguien ha lanzado un BitArray más robusto para .NET?

¿Estamos todos reinventando la rueda extendiendo o reemplazando BitArray?

Idealmente, un reemplazo tendría algún/todas estas características:

  1. Implementa IList<bool> en lugar de sólo ICollection.

  2. pueden transmitir contenido a otros diversos tipos, tales como int (para un máximo de BitArrays 32 bits), bool (por BitArrays de un bit), doble, etc.

  3. implementa un tipo ToArray de método que los rendimientos una matriz de bytes Puede ser parametrizado para endianness. Dado que BitArray se puede construir a partir de un parámetro de matriz de bytes en el constructor, parece un buen cierre para poder devolverlo a una matriz de bytes.

  4. Posibilidad de extraer sub-BitArrays de ella. Por ejemplo, desde una matriz como 111101, puede extraer los bits 1 a 4, produciendo un nuevo BitArray de 1110.

  5. Operadores de cambio de bit.

  6. Maneja longitudes de bits indefinidas (como BitArray), pero aún puede convertir a tipos limitados como int, al igual que puede lanzar un largo a un int si sabe que encajará.

  7. ? __ apuesto a que hay un montón de otros elementos en las listas de deseos de las personas.

¿Conoces alguna implementación de código abierto o comercial? Si es de código abierto, sería bueno tener una licencia no recíproca como Apache, MIT o Ms-Pl.

+0

Tu pregunta es exactamente lo que estoy pensando. ¿Alguna actualización de este tema mientras tanto? – Martin

Respuesta

4

Quizás que estás buscando BigInteger en el namespace System.Numerics? Ciertamente parece que puede hacer lo que sea que esté pidiendo.

+2

Requiere .NET Framework 4.0. –

+2

Creo que está buscando algo específicamente relacionado con BitArrays – IDWMaster

+2

@IDWMaster: la clase 'BigInteger' le proporciona alrededor del 70%, incluidas las operaciones de cambio de bit. El otro 30% puede cumplirse con algunos métodos de extensión cuidadosamente diseñados. –

Cuestiones relacionadas