如何将 BitArray
转换为一个整数 int
?
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];
}
byte
数组用作位数组复制的目标,然后使用BitConverter.ToInt32(array, 0)
方法。 - Jozef Benikovský这个版本:
实现:
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;
}
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;
}
1 << i
而不是Convert.ToInt16(Math.Pow(2, i))
呢? - ChristopheD 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 );
现在我想从值X中读取特定的所有位,并将其放入数组或位类型(如bool Val1= bit1,bool Val2=bit2等)中。
我是一个新手,我觉得这对你们来说很简单。
|=
和 (short)(1 << bitToSet)
,这样一眼就能看出来。这段代码并不是无法理解,但它依赖于一些“精心选择的巧合”组合而成,而不是显然地做正确的事情。 - harold