Преобразование массива символов в массив целых чисел
У меня есть эти массивы
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());
}