2013-10-31 28 views
10

Ich habe diese Arrayseine Reihe von Zeichen auf ein Array von ganzen Zahlen

char[] array = {'1', '2', '3', '4'}; 
int[] sequence = new int[array.Length]; 

Gibt es einen einfachen Weg, um die Zahlen in array-sequence zuweisen?

ich versuchte, diesen

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

Aber ich bekomme die ASCII-Codierung von 1, 2, 3, 4 nicht die Zahlen für sich.

+1

Versuchen Sie, die Zahlen in der Zeichenfolge von "1" auf "1" und so weiter zu ändern. Dies sollte es ändern, so dass sie zu ganzen Zahlen wechseln. – deathismyfriend

+0

'Aber ich bekomme die ASCII-Codierung von 1,2,3,4 nicht die Zahlen selbst. Tatsächlich erhalten Sie die 32-Bit-Ganzzahl mit Vorzeichen des _Unicode_-Zeichens. – Harrison

Antwort

6

einfach konvertieren die char auf ein string zuerst:

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

Aber natürlich können Sie dies alles in einem einzigen Linq-Abfrage tun:

char[] array = {'1', '2', '3', '4'}; 
int[] sequence = array.Select(c => Convert.ToInt32(c.ToString())).ToArray(); 
3

versuchen

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

können Sie Enumerable.Range das erreichen verwenden werden können. Es erzeugt eine Folge von fortlaufenden Nummern von - bis.

Nur ein Beispiel:

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

Diese in dem Fall ist, wenn ursprüngliche char Array nur eine fortlaufende Folge von Zahlen in char ist.

Wenn Array Gegenstand beliebiger Reihenfolge und Sequenz ist, verwenden Sie einfach richtig convertion:

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

Iterierte über dem char-Array und verwenden Sie die nächste Umwandlung:

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

Wenn Sie konvertieren jedes Zeichen zu einer Zeichenfolge zuerst, dann verwenden Sie int.Parse (oder immer noch Convert.ToInt32), die funktionieren.

Persönlich würde ich LINQ dafür, z.

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

... oder ToList verwenden, wenn Sie mit List<int> genauso zufrieden sind.

Wenn Sie Char.GetNumericValue verwenden möchten, wie in eine andere Antwort vorgeschlagen, können Sie auch, dass mit LINQ verwenden:

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

Beachten Sie, dass die Besetzung zu int ist erforderlich, weil char.GetNumericValue eine double zurückgibt. (Es gibt Unicode-Zeichen für Werte wie „eine Hälfte“ zum Beispiel.)

Oder wenn Sie absolut sicher sind, sind Sie nur ASCII-Ziffern gehen zu müssen, können Sie die schnell und schmutzig verwenden:

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

verwenden:

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

es gibt viele richtige Antworten hier, aber (es sei denn, Sie unsicheren Code verwenden möchten) ist dies der schnellste ist, und es keine zusätzlichen Speicher.

0

Try this:

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

Versuchen Sie, den Wert Char in String zu konvertieren, bevor Sie in Ganzzahl konvertieren:

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