Преобразование массива символов в массив целых чисел

У меня есть эти массивы

char[] array = {'1', '2', '3', '4'};
int[] sequence = new int[array.Length];  

Есть ли простой способ присвоить числа от array до sequence?

Я пробовал это

for (int i = 0; i < array.Length; i++)
{
    seqence[i] = Convert.ToInt32(array[i]);
}

Но я получаю ASCII-кодирование 1, 2, 3, 4, а не числа.

Ответ 1

Сначала преобразуйте char в string:

for (int i = 0; i < array.Length; i++)
{
     sequence[i] = Convert.ToInt32(array[i].ToString());
}

Но, конечно, вы можете сделать это все в одном запросе linq:

char[] array = {'1', '2', '3', '4'};
int[] sequence = array.Select(c => Convert.ToInt32(c.ToString())).ToArray();

Ответ 2

using System.Linq;

char[] array = { '1', '2', '3', '4' };
var ints = array.Select(x => int.Parse(x.ToString()));

Ответ 3

Если вы сначала конвертируете каждый символ в строку, используйте int.Parse (или еще Convert.ToInt32), который будет работать.

Лично я бы использовал LINQ для этого, например

int[] sequence = array.Select(x => int.Parse(x.ToString())).ToArray();

... или используйте ToList, если вы так же довольны List<int>.

Если вы хотите использовать Char.GetNumericValue, как предложено в другом ответе, вы также можете использовать это с LINQ:

int[] sequence = array.Select(x => (int) char.GetNumericValue(x)).ToArray();

Обратите внимание, что приведение в int требуется, потому что Char.GetNumericValue возвращает a double. (Например, символы Unicode для значений, например, "половина" ).

Или, если вы абсолютно уверены, что у вас просто будут цифры ASCII, вы можете использовать быстрый и грязный:

int[] sequence = array.Select(x => x - '0').ToArray();

Ответ 4

попробовать

for (int i = 0; i < arr.Length; i++)
 {
     seqence[i] = (int)Char.GetNumericValue(array[i]);
 }

Ответ 5

Вы можете использовать Enumerable.Range для достижения этого. Он генерирует последовательность последовательных чисел от - до.

Просто пример:

 IEnumerable<int> squares = Enumerable.Range(1, 10)

Это в том случае, если исходный массив char - это просто последовательная последовательность чисел в char.

Если массив подчинен произвольному порядку и последовательности, просто используйте правильное преобразование:

array.Select(x => int.Parse(x.ToString()))

Ответ 6

итерации по массиву char и используйте следующее преобразование:

char[] charArray = { '1', '2', '3', '4' };

int[] intArray= new int[charArray .Length];

for (int i = 0; i < charArray .Length; i++)
{
    intArray[i] = (int)Char.GetNumericValue(charArray[i]);   

}

Ответ 7

Используйте это:

for (int i = 0; i < array.Length; i++)
{
    sequence[i] = array[i] - '0';
}

Здесь есть много правильных ответов, но (если вы не хотите использовать небезопасный код) это самый быстрый, и он не использует дополнительную память.

Ответ 8

Попробуйте следующее:

char[] array = { '1', '2', '3', '4' };

int[] sequence = new int[array.Length];

for (int i = 0; i < array.Length; i++)
{
    sequence[i] = int.Parse(array[i].ToString());
}

Ответ 9

Попробуйте преобразовать значение Char в String перед преобразованием в Integer:

for (int i = 0; i < arr.Length; i++)
{
  sequence[i] = Convert.ToInt32(array[i].ToString());
}