转换为 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]
是最低有效位) - 所以你的 true
、true
、false
、false
最终表示二进制为 0011, 而不是 1100。
它并没有忽略最后两位 - 它只是按照与您预期相反的顺序处理您的初始数组。
如果您希望它在将位转换为整数时将第一个指定的值设为最 有效值,则需要反转您的输入数组。
考虑以下位数组:
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]
是最低有效位) - 所以你的 true
、true
、false
、false
最终表示二进制为 0011, 而不是 1100。
它并没有忽略最后两位 - 它只是按照与您预期相反的顺序处理您的初始数组。
如果您希望它在将位转换为整数时将第一个指定的值设为最 有效值,则需要反转您的输入数组。