[英]Convert an array of chars to an array of integers
我有这些数组
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编码,而不是数字本身。
using System.Linq;
char[] array = { '1', '2', '3', '4' };
var ints = array.Select(x => int.Parse(x.ToString()));
首先将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();
如果首先将每个字符转换为字符串,则使用将起作用的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
是必需的,因为char.GetNumericValue
返回一个double
。 (例如,对于诸如“一半”的值,存在Unicode字符。)
或者,如果你完全确定你将拥有ASCII数字,你可以使用快速和脏:
int[] sequence = array.Select(x => x - '0').ToArray();
尝试
for (int i = 0; i < arr.Length; i++)
{
seqence[i] = (int)Char.GetNumericValue(array[i]);
}
你可以使用Enumerable.Range来实现这一点。 它从 - 到生成一系列连续数字。
举个例子:
IEnumerable<int> squares = Enumerable.Range(1, 10)
如果原始字符数组只是char中连续的数字序列,则属于这种情况。
如果数组是任意顺序和序列的主题,只需使用正确的转换:
array.Select(x => int.Parse(x.ToString()))
迭代您的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]);
}
用这个:
for (int i = 0; i < array.Length; i++)
{
sequence[i] = array[i] - '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());
}
尝试在转换为Integer之前将Char值转换为String:
for (int i = 0; i < arr.Length; i++)
{
sequence[i] = Convert.ToInt32(array[i].ToString());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.