将字符数组转换为整数数组
Posted
技术标签:
【中文标题】将字符数组转换为整数数组【英文标题】:Convert an array of chars to an array of integers 【发布时间】:2013-11-11 13:20:09 【问题描述】:我有这些数组
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 编码,而不是数字本身。
【问题讨论】:
尝试将字符串中的数字从“1”更改为“1”,依此类推。这应该改变它,以便它们变为整数。But I get the ASCII coding of 1,2,3,4 not the numbers themselves
。实际上,你得到的是 Unicode 字符的 32 位有符号整数。
【参考方案1】:
遍历您的 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]);
【讨论】:
【参考方案2】:using System.Linq;
char[] array = '1', '2', '3', '4' ;
var ints = array.Select(x => int.Parse(x.ToString()));
【讨论】:
【参考方案3】:在转换为整数之前尝试将您的 Char 值转换为字符串:
for (int i = 0; i < arr.Length; i++)
sequence[i] = Convert.ToInt32(array[i].ToString());
【讨论】:
【参考方案4】:只需先将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();
【讨论】:
【参考方案5】:试试这个:
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());
【讨论】:
【参考方案6】:使用这个:
for (int i = 0; i < array.Length; i++)
sequence[i] = array[i] - '0';
这里有很多正确的答案,但是(除非你想使用不安全的代码)这是最快的,而且它不使用额外的内存。
【讨论】:
【参考方案7】:如果您先将每个字符转换为字符串,然后使用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();
请注意,转换为 int
是必需的,因为 char.GetNumericValue
返回 double
。 (例如“a half”等值的 Unicode 字符。)
或者,如果您绝对确定您将使用 ASCII 数字,则可以使用快速而肮脏的:
int[] sequence = array.Select(x => x - '0').ToArray();
【讨论】:
【参考方案8】:您可以使用Enumerable.Range 来实现这一点。它生成从 - 到的连续数字序列。
只是一个例子:
IEnumerable<int> squares = Enumerable.Range(1, 10)
如果原始 char 数组只是 char 中的连续数字序列,则属于这种情况。
如果数组是任意顺序和顺序的主题,只需使用正确的转换:
array.Select(x => int.Parse(x.ToString()))
【讨论】:
【参考方案9】:试试
for (int i = 0; i < arr.Length; i++)
seqence[i] = (int)Char.GetNumericValue(array[i]);
【讨论】:
以上是关于将字符数组转换为整数数组的主要内容,如果未能解决你的问题,请参考以下文章