Подтвердить что ты не робот

Как преобразовать int в массив bool?

Как преобразовать int в массив bool (представляющий биты целого)? Например:

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

Ответ 1

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

Ответ 2

An 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[] будет намного больше

Ответ 3

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

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

Ответ 4

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

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

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

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

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

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

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

Ответ 5

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