将字符数组转换为整数数组

时间:2013-10-31 13:42:54

标签: c# arrays char int type-conversion

我有这些数组

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]);
}

但我得到的是1,2,3,4的ASCII编码,而不是数字本身。

9 个答案:

答案 0 :(得分:11)

using System.Linq;

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

答案 1 :(得分:6)

首先将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 :(得分:4)

如果您先将每个字符转换为字符串,请使用可行的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会返回double。 (例如,对于诸如“一半”的值,存在Unicode字符。)

或者,如果你完全确定你将拥有ASCII数字,你可以使用快速和脏的:

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

答案 3 :(得分:3)

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

答案 4 :(得分:1)

您可以使用Enumerable.Range来实现这一目标。它从 - 到生成一系列连续数字。

只是一个例子:

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

如果原始字符数组只是char中连续的数字序列,则会出现这种情况。

如果数组是任意顺序和序列的主题,只需使用正确的转换:

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

答案 5 :(得分:0)

遍历您的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]);   

}

答案 6 :(得分:0)

使用此:

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

这里有很多正确的答案,但是(除非你想使用不安全的代码)这是最快的,它不会使用额外的内存。

答案 7 :(得分:0)

试试这个:

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

答案 8 :(得分:0)

尝试在转换为Integer之前将Char值转换为String:

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