考虑以下BitArray:
BitArray bitArray = new BitArray(new Boolean[] {true, true, false, false});
并且以二进制等于:
1100
现在我想将其转换为int并尝试使用此页面中描述的方法:How can I convert BitArray to single int?
但是,这两种方法都会将1100
转换为3
而不是12
。因此,它似乎忽略了最后两位,并认为它的大小为2位,当然答案是3
。
上面链接页面上的一个方法,在行动中:
int[] array = new int[1];
bitArray.CopyTo(array, 0);
执行上述操作后,bitArray
的值为3。
如何在代码中表达我希望它考虑所有4位?
答案 0 :(得分:1)
BitArray(bool[])
的构造函数接受索引顺序的值 - 然后CopyTo
在传统意义中使用它们(因此bitArray[0]
是最不重要的位) - 所以你的{{1 }},true
,true
,false
最终意味着二进制中的0011,不 1100。
它没有忽略最后两位 - 它只是以与你预期的相反的顺序处理你的初始数组。
如果您希望在将位转换为整数时将第一个指定的值作为最多有效值,则需要反转输入数组。