c# - example - byte[] to int
¿Cómo puedo convertir BitArray a single int? (4)
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;
}
¿Cómo puedo convertir BitArray
en una sola int
? La forma más rápida pls ...
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 ..
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;
}