1
public static int getIntegerFromBitArray(BitArray bitArray)
{
  var result = new int[1];
  bitArray.CopyTo(result, 0);
  return result[0];
}

// Input  A) 01110
// Output A) 14
// Input  B) 0011
// Output B) 12 <=== ????? WHY!!! :)

有人可以解释一下为什么我的第二个返回值是 12 而不是 3?求求你了,谢谢你。

4

2 回答 2

10

基本上它以与您期望的方式相反的顺序考虑位 - 您没有显示如何将输入二进制映射到 a BitArray,但结果是将其视为 1100 而不是 0011。

诚然,文档并不清楚,但它确实按期望的方式工作:bitArray[0]代表不重要的值,就像讨论二进制时通常一样(所以位 0 是 0/1,位 1 是 0/ 2,位 2 是 0/4,位 3 是 0/8 等等)。例如:

using System;
using System.Collections;

class Program
{
    static void Main(string[] args)
    {
        BitArray bits = new BitArray(8);
        bits[0] = false;
        bits[1] = true;

        int[] array = new int[1];
        bits.CopyTo(array, 0);
        Console.WriteLine(array[0]); // Prints 2
    }
}
于 2012-03-14T07:37:24.583 回答
1

您需要将位旋转到正确的方向才能获得正确的结果。1100 是 12

于 2012-03-14T07:40:25.150 回答