2015-06-14 38 views
0

考虑以下BitArray忽略:长度为4的BitArray最后两位被转换时为int

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位?

回答

1

BitArray(bool[])构造函数接受索引顺序值 - 然后CopyTo使用这些传统意义上的(所以bitArray[0]是最显著位) - 让你的truetruefalsefalse二进制结束的意思0011, 不是 1100.

它不会忽略最后两位 - 它只是按照您预期的顺序处理您的初始数组。

如果您希望在将位转换为整数时将第一个指定值作为大多数重要值,则需要反转输入数组。

+0

啊..那么有道理。谢谢! – DSF