Come convertire BitArray
in un unico int
? Il modo più veloce pls ...Come posso convertire BitArray in single int?
risposta
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];
}
Wow ... Non pensavo che avrebbe funzionato per mettere tutti i bit in un unico valore intero - ma lo fa! – codekaizen
Riferiscilo: http://codereview.stackexchange.com/questions/3796/converting-binary-value-from-bitarray-to-an-int-and-back-in-c/3797#3797 È necessario controllare la lunghezza di bitArray – Ngm
Aggiunto controllo degli argomenti. –
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;
}
Puoi spiegare perché l'OP dovrebbe usare questa soluzione rispetto all'altra? –
@AustinHenley Ho scritto questa soluzione a scopo di debug. Posso scorrere il mio codice per vedere come viene convertito il numero. Non sono sicuro che tu possa farlo con la prima soluzione. – K4KNOWLEDGE
È anche interessante sapere che la prima soluzione non è disponibile su WinRT (probabilmente a causa del modo in cui i processori ARM salvano i numeri) –
refer a questo post (# 43.935.747). Un valore X è breve. Ho impostato due bit (6 e 10) come di seguito: short 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);
Ora vorrei leggere il tutti i bit specifico dal valore X e metterlo in un array o un tipo po 'come bool Val1 = bit1, bool Val2 = bit2 ....
I Sono un principiante e penso che sia abbastanza semplice per voi ragazzi ..
OK ma dovresti renderlo '| =' e '(short) (1 << bitToSet)' per renderlo più ovvio a colpo d'occhio. Non è come se questo codice fosse incomprensibile, ma si basa sulla combinazione di alcune "coincidenze scelte con cura" invece di fare semplicemente la cosa giusta. – harold
BitArray per int Array o letteralmente un BitArray per un singolo intero? –
A numero intero singolo. –