2010-12-15 2 views

ответ

7
Int32 number = 10; 

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

--Edit--

Использование метода расширения:

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(); 
7

Вы можете использовать BitArray.

var bools = new BitArray(new int[] { yourInt }).Cast<bool>().ToArray(); 
+0

`новый ИНТ [yourInt]` `должен быть новый ИНТ [] {yourInt}` ` – 2010-12-15 08:50:13

+0

Если yourInt` 255, он не будет создавать массив с длиной восемь полный истины или даже массив длиной 32, где последние восемь верны, он создаст массив длиной 8160, который будет заполнен ложным. – Guffa 2010-12-15 08:53:43

+0

@ Guffa: В коде есть ошибка. См. Комментарий @Albin Sunnanbo. Если мы исправим комментарий @ Albin, тогда размер массива равен 32. – dhinesh 2010-12-15 08:59:59

12

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 

Однако, лично я бы просто использовать сдвиги (>> и т.д.) и сохранить его в качестве int. bool[] будет много больше

0

Вы можете использовать BitArray легко получить коллекцию булевых из ряда:

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

Однако, он будет использовать все биты в значении, так что выше вы получите BitArray с длиной 32, так как тип данных int - 32 бит.

Вы можете создать BitArray из байт, который даст вам восемь булевых из каждого байта:

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

Вы можете получить массив с только значащими битами, пропуская ведущую falses:

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

Вы можете сделать это как двухэтапный процесс, сначала преобразовать целое число в двоичное (базовое 2) строковое представление, используя Convert.ToString, а затем перебрать эту строку, чтобы заполнить 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'); 
} 
Смежные вопросы