¿Cómo puedo convertir BitArray a single int?

¿Cómo puedo convertir BitArray en una sola int ? La forma más rápida pls …

 private int getIntFromBitArray(BitArray bitArray) { if (bitArray.Length > 32) throw new ArgumentException("Argument length shall be at most 32 bits."); int[] array = new int[1]; bitArray.CopyTo(array, 0); return array[0]; } 
 private int getIntFromBitArray(BitArray bitArray) { int value = 0; for (int i = 0; i < bitArray.Count; i++) { if (bitArray[i]) value += Convert.ToInt16(Math.Pow(2, i)); } return value; } 

Refiriéndose a esta publicación (# 43935747). Un valor X es corto tpe donde establezco dos bits (6 y 10) como a continuación: corto X = 1;

  var result = X; var bitsToSet = new [ ] { 5,9 }; foreach ( var bitToSet in bitsToSet ) { result+=( short ) Math.Pow ( 2,bitToSet ); } string binary = Convert.ToString ( result,2 ); 

Ahora me gustaría leer los bits específicos de Value X y ponerlos en una matriz o un tipo de bit como bool Val1 = bit1, bool Val2 = bit2 ….

Soy un novato y creo que es bastante simple para ustedes, guyes ..

Esta versión:

  • funciona hasta 64 bits
  • no se basa en el conocimiento de los detalles de implementación de BitArray
  • no asigna innecesariamente memoria
  • no arroja ninguna excepción (puede agregar un cheque si espera más bits)
  • debe ser más que razonablemente rendimiento

Implementación:

 public static ulong BitArrayToU64(BitArray ba) { var len = Math.Min(64, ba.Count); ulong n = 0; for (int i = 0; i < len; i++) { if (ba.Get(i)) n |= 1UL << i; } return n; }