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

本文关键字:转换 int 两个 BitArray 最后 | 更新日期: 2023-09-27 17:56:24

请考虑以下位数组:

BitArray bitArray = new BitArray(new Boolean[] {true, true, false, false});

在二进制等于:

1100

现在我想将其转换为 int,并尝试使用此页面上描述的方法:如何将 BitArray 转换为单个 int?

但是,这两种方法都将1100转换为3而不是12。所以它似乎忽略了最后两位并认为它的大小为 2 位,答案当然是 3 .

上面链接页面上的方法之一,在行动中:

int[] array = new int[1];
bitArray.CopyTo(array, 0);

执行上述操作后,bitArray的值为 3。

如何在代码中表达我希望它考虑所有 4 位?

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

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

它不会忽略最后两位 - 它只是以与预期相反的顺序处理初始数组。

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