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

11

我有这些数组

char[] array = {'1', '2', '3', '4'};
int[] sequence = new int[array.Length];  
< p >有没有一种简单的方式将< code >array< /code >中的数字分配给< code >sequence< /code >?< /p > < p >我试过了这个< /p >
for (int i = 0; i < array.Length; i++)
{
    seqence[i] = Convert.ToInt32(array[i]);
}

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


1
尝试将字符串中的数字从 '1' 更改为 "1" 等。这应该会将它们更改为整数。 - deathismyfriend
但我得到的是1、2、3、4的ASCII编码,而不是它们本身的数字。实际上,您得到的是Unicode字符的32位有符号整数。 - Harrison
9个回答

11
using System.Linq;

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

7

首先将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();

4
如果你先将每个字符转换为字符串,然后使用 int.Parse(或仍然使用Convert.ToInt32),这将起作用。
就个人而言,我会使用 LINQ,例如:
int[] sequence = array.Select(x => int.Parse(x.ToString())).ToArray();

如果你对 List<int> 感到满意,那么可以使用 ToList

如果你想像另一个答案中建议的那样使用 Char.GetNumericValue,也可以在 LINQ 中使用它:

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

请注意,需要将char.GetNumericValue的返回值转换为int类型,因为它返回的是double类型。(例如,Unicode字符中存在像“一半”这样的值。)

或者,如果您确定只有ASCII数字,可以使用以下简单粗暴的方法:

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

3

尝试

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

1
你可以使用Enumerable.Range来实现这一点。它可以生成一系列从-到的连续数字。
只是一个例子:
 IEnumerable<int> squares = Enumerable.Range(1, 10)

如果原始字符数组只是连续的数字序列,则应如此处理。

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

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

0

遍历您的字符数组并使用下一个转换:

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

}

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

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


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

0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接