如何将BitArray
转换为单个int
?
答案 0 :(得分:52)
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];
}
答案 1 :(得分:8)
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;
}
答案 2 :(得分:3)
此版本:
实施:
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;
}
答案 3 :(得分:0)
对这篇文章的反馈(#43935747)。值X是短tpe,我设置了两位(6和10),如下所示: 短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 );
现在我想读取值X中的特定所有位并将其放入数组或类似bool的类型Val1 = bit1,bool Val2 = bit2 ....
我是新手,我认为这对你来说非常简单..