Konvertieren von char zu int in C#
Ich habe einen char in c#:
char foo = '2';
Nun möchte ich die 2 in einen int. Ich finde, dass Konvertieren.ToInt32 liefert die tatsächlichen Dezimalwert des char und nicht die Zahl 2. Die folgenden arbeiten:
int bar = Convert.ToInt32(new string(foo, 1));
int.Parsen funktioniert nur auf strings.
Gibt es keine native Funktion in C# zu gehen, einen char zu int, ohne dass es ein string? Ich weiß, das ist trivial, aber es scheint nur seltsam, dass es nichts natives, um direkt die Konvertierung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Interessante Antworten, aber die docs sagen anders:
http://msdn.microsoft.com/en-us/library/system.char.aspx
char.GetNumericValue('¼')
Erträge 0.25. Die Freuden des Unicode... 😉char
zuint
ohne Verwendungstring
ersten.Dieser konvertiert es in ein int:
Dies funktioniert, da jedes Zeichen wird intern durch eine Zahl dargestellt. Die Zeichen '0' bis '9' dargestellt, die von aufeinander folgenden zahlen, so ist das finden der Unterschied zwischen dem Zeichen '0' und '2' ergibt die Zahl 2.
char
ist immer UTF-16.char
im .Net Core ist immer noch UTF-16. Es gibt Arbeit, die getan zum hinzufügen von UTF-8-string in einer zukünftigen version .Net Core, aber auch das wird sich nicht ändernchar
.Hat jemand betrachtet, mit
int.Parse()
undint.TryParse()
wie dieseSogar besser wie dieser
Es ist viel sicherer und weniger fehleranfällig
'0'
aus dem char.und Sie können erstellen Sie eine statische Methode aus:
Versuchen, Diese
'9'
, aber dein code hat9
, die nicht kompiliert wird.Standardmäßig UNICODE verwenden, so empfehle ich die Nutzung fehlerhafter Methode
int bar = int.Parse(foo.ToString());
Obwohl die numerischen Werte unter den gleichen Ziffern und basic-Latin-Zeichen.
Dieser wandelt einen integer und handles unicode
CharUnicodeInfo.GetDecimalDigitValue('2')
Lesen Sie mehr hier.
Prinzip:
Den binären ASCII-Charaktere 0-9 ist:
wenn Sie in jedem von Ihnen die ersten 4 LSB (bitweise UND mit 8'b00001111, dass gleich 15) erhält man die tatsächliche Anzahl (0000 = 0,0001=1,0010=2,... )
Verwendung:
Der richtige Weg ist:
"theNameOfYourInt" - int Sie wollen Ihren char umgewandelt werden.
"theNameOfYourChar" - Der Char Sie verwendet werden soll, so wird es umgewandelt in ein int.
Lassen alles andere sein.
Vergleich einiger Methoden, die sich auf das Ergebnis, wenn der Charakter sich nicht um eine ASCII-Ziffer:
Ich bin mit Compact Framework 3.5, und nicht ein "char.Parse" - Methode.
Ich denke, dass ist nicht schlecht, verwenden Sie die Convert-Klasse. (Siehe " CLR via C#, Jeffrey Richter)
Arbeitet mit ASCII-char-oder Unicode-char
Ich bin einverstanden mit @Chad Grant
Auch Recht, wenn Sie konvertieren zu einem string können Sie dann diesen Wert als numerischer Wert, wie gesagt, in der Frage
Habe ich versucht, um einen einfachen und verständlichen Beispiel
char.GetNumericValue(v) gibt an, wie Doppel-und wandelt (int)
Mehr Advenced Nutzung als array
Ich habe gesehen, viele Antworten, aber Sie scheinen verwirrend für mich. Können wir nicht einfach nur die Verwendung von Type-Casting.
Für die ex:-
Dieser arbeitete für mich:
int.Parse(foo.ToString())
, außer dass Sie weniger lesbar?