2013-10-31 88 views
10

數組我有這些陣列轉換字符數組爲整數

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」更改爲「1」等等。這應該改變它,所以他們改變爲整數。 – deathismyfriend

+0

'但是我得到的是1,2,3,4的ASCII碼,而不是數字本身。實際上,你得到_Unicode_字符的32位有符號整數。 – Harrison

回答

6

只是轉換了charstring第一:

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(); 
3

嘗試

for (int i = 0; i < arr.Length; i++) 
{ 
    seqence[i] = (int)Char.GetNumericValue(array[i]); 
} 
1

您可以可使用Enumerable.Range來實現這一目標。它從 - 到生成一系列連續的數字。

只是一個例子:

IEnumerable<int> squares = Enumerable.Range(1, 10) 

這在情況下,如果原始字符數組只是在炭號的連續序列。

如果陣列受任意次序和順序,只需要使用正確的皈依:

array.Select(x => int.Parse(x.ToString())) 
12
using System.Linq; 

char[] array = { '1', '2', '3', '4' }; 
var ints = array.Select(x => int.Parse(x.ToString())); 
0

迭代在你的字符數組,使用接下來的轉換:

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]); 

} 
6

如果轉換每個字符先到字符串,然後使用int.Parse(或仍然Convert.ToInt32),將工作。我個人使用LINQ來處理這個問題,例如,

int[] sequence = array.Select(x => int.Parse(x.ToString())).ToArray(); 

...或使用ToList如果你只是List<int>一樣快樂。

如果你想使用Char.GetNumericValue作爲另一個答案的建議,您可以使用與LINQ太:

int[] sequence = array.Select(x => (int) char.GetNumericValue(x)).ToArray(); 

注意,投給int是必需的,因爲char.GetNumericValue返回double。 (這裏是值的,如「半」比如Unicode字符。)

或者如果你絕對相信你只是將不得不ASCII數字,你可以使用快速和骯髒的:

int[] sequence = array.Select(x => x - '0').ToArray(); 
0

使用此:

for (int i = 0; i < array.Length; i++) 
{ 
    sequence[i] = array[i] - '0'; 
} 

有許多正確的答案在這裏,但(除非你想使用不安全的代碼),這是最快的,它不會使用更多的內存。

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()); 
} 
0

嘗試在轉換爲Integer之前將Char值轉換爲String:

for (int i = 0; i < arr.Length; i++) 
{ 
    sequence[i] = Convert.ToInt32(array[i].ToString()); 
}