位数组到整数问题
本文关键字:问题 整数 数组 | 更新日期: 2023-09-27 18:27:39
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?请。。。谢谢。
基本上,
它以与您预期的方式相反的顺序考虑位 - 您尚未显示如何将输入二进制映射到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
}
}
您需要将
位旋转到正确的方向才能获得正确的结果。 1100 是 12