【问题标题】:Last two bits in a BitArray of length 4 are being ignored when converting to int转换为 int 时忽略长度为 4 的 BitArray 中的最后两位
【发布时间】:2015-08-30 07:02:04
【问题描述】:

考虑以下位数组:

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

【问题讨论】:

    标签: c# binary int bit bitarray


    【解决方案1】:

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

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

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

    【讨论】:

    • 啊..那是有道理的。谢谢!
    猜你喜欢
    • 2013-12-26
    • 2016-06-25
    • 2018-02-27
    • 2012-12-21
    • 2011-07-14
    • 2017-05-31
    • 2016-05-16
    • 2013-02-06
    • 2014-11-29
    相关资源
    最近更新 更多