如何将int转换为bool数组?

如何将int转换为bool数组(表示整数中的位)? 例如:

4 = { true, false, false } 7 = { true, true, true } 255 = { true, true, true, true, true, true, true, true } 

 Int32 number = 10; var array = Convert.ToString(number, 2).Select(s => s.Equals('1')).ToArray(); 

– 编辑 –

使用扩展方法:

 public static class Int32Extensions { public static Boolean[] ToBooleanArray(this Int32 i) { return Convert.ToString(i, 2 /*for binary*/).Select(s => s.Equals('1')).ToArray(); } } 

用法:

 var boolArray = number.ToBooleanArray(); 

一个int应该很好地映射到BitVector32 (或BitArray

 int i = 4; var bv = new BitVector32(i); bool x = bv[0], y = bv[1], z = bv[2]; // example access via indexer 

但是,我个人只是使​​用shift( >> etc)并将其保存为intbool[]会更大

您可以使用BitArray 。

 var bools = new BitArray(new int[] { yourInt }).Cast().ToArray(); 
  public static bool[] Convert(int[] input, int length) { var ret = new bool[length]; var siz = sizeof(int) * 8; var pow = 0; var cur = 0; for (var a = 0; a < input.Length && cur < length; ++a) { var inp = input[a]; pow = 1; if (inp > 0) { for (var i = 0; i < siz && cur < length; ++i) { ret[cur++] = (inp & pow) == pow; pow *= 2; } } else { for (var i = 0; i < siz && cur < length; ++i) { ret[cur++] = (inp & pow) != pow; pow *= 2; } } } return ret; } 

您可以使用BitArray轻松地从一个数字中获取一组布尔值:

 var b = new BitArray(new int[] { 255 }); 

但是,它将使用值中的所有位,因此上面将为您提供长度为32的BitArray ,因为int数据类型为32位。

你可以从字节创建一个BitArray ,这将从每个字节给你八个布尔值:

 var b = new BitArray(new byte[] { 255 }); 

你可以通过跳过主要的错误来获得一个只有重要位的数组:

 bool[] b = new BitArray(42).Cast().SkipWhile(x => !x).ToArray(); 

您可以通过两步过程完成此操作,首先使用Convert.ToString将整数转换为二进制(基数2)字符串表示,然后迭代该字符串以填充BitArray

例如:

 int someInt = 7; string binaryString = Convert.ToString(someInt, 2); BitArray bitArray = new BitArray(binaryString.Length); for (int i = 0; i < bitArray.Length; i++) { bitArray[i] = (binaryString[i] == '1'); }