2017-06-21 128 views
-2

我有一个字符串,它的值是'12345678'。我想将此值分配给整数数组,如数组的第一个索引包含1,数组的第二个索引包含2等等。所以,当我写下面的代码并执行,然后我收到值48为0索引和值49为第二索引,ascii值我的号码。 声明字符串到int数组转换c#

int[] ArryDIReadValue = new int[DI_COUNT_CHANNEL]; 
string binary = Convert.ToString(portData, 2); 

ArryDIReadValue = binary.Select(n => Convert.ToInt32(n)).ToArray(); 

有人可以请帮助克服这个问题。

+1

'binary.ToCharArray();'?之后,您可以将每个char解析为一个int并将它们粘贴到您的'ArryDIReadValue'数组中。 – michip96

回答

2
ArryDIReadValue = binary.Select(n => (n - '0')).ToArray(); 

简单,快捷。

n - 是char。所以,chars0,1,... 9有代码30,31,... 39。所以,要获得int值,我们需要从每个代码30中减去。我们知道,30是char 0的代码。

+0

我想知道它是如何工作的。你能解释一下它是如何工作的吗? –

1

尝试添加ToString(),如;

ArryDIReadValue = binary.Select(n => Convert.ToInt32(n.ToString())).ToArray(); 
+0

谢谢..现在正在工作... –

1

使用char.GetNumericValue

ArryDIReadValue = binary.Select(n => (int)char.GetNumericValue(n)).ToArray(); 
+0

这将只适用于当我声明双数组像 double [] ArryDIReadValue = binary.Select(n => char.GetNumericValue(n))。ToArray();否则会出错。 –

+0

@PriyankaMehta我编辑了答案。它只是你想要的。 – Adrian

+0

谢谢....它现在的工作 –