转换为 int 时忽略长度为 4 的 BitArray 中的最后两位

Last two bits in a BitArray of length 4 are being ignored when converting to 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 位?

BitArray(bool[]) 的构造函数按索引顺序接受值 - 然后 CopyTo 按传统意义使用它们(所以 bitArray[0] 是最低有效位) - 所以你的 truetruefalsefalse 最终表示二进制为 0011, 而不是 1100。

它并没有忽略最后两位 - 它只是按照与您预期相反的顺序处理您的初始数组。

如果您希望它在将位转换为整数时将第一个指定的值设为 有效值,则需要反转您的输入数组。