2017-06-21 2 views
-2

Ich habe eine Zeichenfolge, deren Wert '12345678' ist. Ich möchte diesen Wert einem Ganzzahl-Array zuweisen, wie der erste Index des Arrays 1 enthält, der zweite Index des Arrays 2 usw. Wenn ich also unter Code schreibe und dann ausführe, dann habe ich den Wert 48 für den Index 0 und den Wert 49 für den zweiten Index, den ASCII-Wert meiner Nummer erhalten. ErklärungString zu int Array-Konvertierung C#

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

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

Könnte jemand bitte helfen, dieses Problem zu überwinden.

+1

Was ist mit 'binary.ToCharArray();'? Danach können Sie jedes Zeichen zu einem int parsen und in Ihr Array 'ArryDIReadValue' einfügen. – michip96

Antwort

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

einfach und schnell.

n - ist char. Also, chars0, 1, ... 9 hat Codes 30, 31, ... 39. Also, um int Wert zu erhalten, müssen wir von jedem Code 30 subtrahieren. Und wir wissen, 30 ist Code von char 0.

+0

Ich fragte mich, wie es funktioniert. Kannst du mir bitte erklären, wie es funktioniert. –

1

Versuchen Sie, ToString() wie z.

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

danke..now es funktioniert ... –

1

Verwendung char.GetNumericValue:

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

Dies funktioniert nur, wenn ich Doppel-Array wie double [] ArryDIReadValue = binary.Select (n => char.GetNumericValue (n)). ToArray(); Sonst gibt es einen Fehler. –

+0

@PriyankaMehta Ich habe die Antwort bearbeitet. Es funktioniert genau so, wie du es willst. – Adrian

+0

Danke .... Es funktioniert jetzt –