2017-06-21 153 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

謝謝....它現在的工作 –