Работа только на фильтрующих элементах массива chr - PullRequest
0 голосов
/ 18 октября 2019

У меня есть эти простые программы, которые конвертируют числа в двоичные.

public static void Main()
{
    int value = 007755 ;

    string binary = Convert.ToString(value, 2);

    Console.WriteLine(binary);

    //Convert to char array
    char[] binary_array = binary.ToCharArray(); 



    // List all elements
    for (int i = 0; i < binary_array.Length; i++)
    {               

        char letter = binary_array[i];

        Console.Write("Element " + i + ": ");
        Console.Write(letter);          
    }           

}

У меня должны быть некоторые операции с теми "элементами" массива, которые имеют значение "1". Как я могу это сделать? Я пытаюсь что-то вроде этого:

if(binary_array[i]==1){
 //Some operations
}

, но они не работают на элементе char. Я думаю, что могу преобразовать этот элемент char в int, но как это просто?

1 Ответ

1 голос
/ 18 октября 2019

Вы binary_array - это массив символов, а не массив целых чисел.

Самое простое, что можно сделать:

if (binary_array[i] == '1')

То есть проверить его значение поchar '1'.

Кроме того, вы можете превратить ваш массив символов в массив целых чисел с помощью:

int[] int_array = binary_array.Select(x => x - '0').ToArray();

или:

int[] int_array = binary_array.Select(x => x == '1' : 1 : 0).ToArray();

или:

int[] int_array = binary_array.Select(x => int.Parse(x.ToString())).ToArray();

Или вы можете превратить его в массив bools с помощью:

bool[] bool_array = binary_array.Select(x => x == '1').ToArray();
...