将char数组转换为int数组c#

Posted

技术标签:

【中文标题】将char数组转换为int数组c#【英文标题】:convert char array to int array c# 【发布时间】:2014-03-02 11:17:36 【问题描述】:

我有这个数组

char[] A = ['1', '2', '3', '4']

我想将其转换为 int[]

int[] Aint=[1, 2, 3, 4]

有什么想法吗?

我刚开始编程

谢谢

【问题讨论】:

您自己做了哪些尝试来解决这个问题?你在这些尝试中遇到了什么问题?你知道如何将一个char 转换成它对应的int 值吗?你知道如何根据另一个数组的值创建一个新数组吗? 【参考方案1】:

using System.Linq; 添加 using 语句,然后您可以执行以下操作:

int[] Aint = A.Select(i => Int32.Parse(i.ToString())).ToArray();

如果无法解析A 中的元素,则会出现异常。

【讨论】:

简洁通常是好的,但对于“刚开始编程”的人来说不是那么好。 好吧,他没有要求具体的实现(for循环、while循环等),我喜欢Linq,所以我就是这样实现的。【参考方案2】:

要获得数字字符的数值('0''9'),您可以简单地从其自身中减去 '0' 的代码点。

int[] Aint = A.Select(a => a - '0').ToArray();

数字字符被分配连续的代码点。 '0' 具有代码点 48'1' 具有代码点 49;依此类推,直到'9',其代码点为57。因此,当您减去两位数字字符时,您将得到与减去它们的数值相同的结果。从任何数字中减去'0' 将得到后者的绝对值。

【讨论】:

由于使用了 Select 方法,您需要在代码中包含 System.Linq 命名空间。您可以通过在代码顶部添加 using System.Linq 来做到这一点。 @Krige:你是对的。当您创建新的类文件时,Visual Studio 2013 会自动为您包含它。【参考方案3】:

一点点 Linq 就可以解决问题:

int[] Aint = A.Select(c => c - 48).ToArray(); // or c - '0'

【讨论】:

【参考方案4】:

另一个选项,使用Array.ConvertAllChar.GetNumericValue

int[] Aint = Array.ConvertAll(A, c => (int)Char.GetNumericValue(c));

【讨论】:

我认为这是迄今为止最好的解决方案,因为它非常易于阅读和理解。它实际上是用简单的英语写的。 您有什么理由使用Array.ConvertAll 而不是Select(…).ToArray()?我之所以问,是因为后者现在似乎更流行了(而且你的 lambda 表达式无论如何都需要 C# 3)。 @Douglas: Array.ConvertAllSelect..ToArray 更有效,因为它预先分配了一个大小正确的数组并且不进行任何调整大小。正如 Gray 已经提到的那样,它也是可读/明确的。 @Douglas:此外,它已经与 .NET 2 一起工作,即使是 lambda。 @TimSchmelter:是的,我同意它在这方面更有效。提到 C# 3,我的意思是它需要与 LINQ 相同版本的 C#(和 .NET)。【参考方案5】:

请这样做

  char[] A = '1', '2', '3', '4';
  int[] Aint = new int[A.Length];      
  for (int i = 0;i < A.Length;i++)
  
      Aint[i] = Convert.ToInt32(A[i].ToString()); 
  

【讨论】:

Convert.ToInt32,解决方案中的小错误。【参考方案6】:

你也可以这样做:

int[] Aint = A.Select(c => Convert.ToInt32(c.ToString())).ToArray();

这将选择所有字符数组作为字符串,将它们转换为数组,然后返回一个整数数组。

【讨论】:

以上是关于将char数组转换为int数组c#的主要内容,如果未能解决你的问题,请参考以下文章

将char数组转换为int数组[重复]

C# char[] 转换到string

C#如何将double转为char

从 int 数组转换为 char 数组

c++ - 将 8 个位置的 int 数组转换为 char

c# byte数组转string