HOWTO · Csharp
C# Int in Char konvertieren
Dieses Tutorial zeigt, wie Sie in C# einen int in ein char umwandeln.
Auf dieser Seite
In C# wählen Sie die Konvertierung danach, was die Ganzzahl darstellt: Wandeln Sie einen Wert im char-Bereich per Cast um, verwenden Sie Convert.ToChar() für eine geprüfte Konvertierung, Char.ConvertFromUtf32() für einen Unicode-Codepunkt oder ToString()[0], um die erste Dezimalziffer einer nicht negativen Ganzzahl zu lesen. Diese Operationen liefern unterschiedliche Ergebnisse; das Extrahieren von Ziffern ist daher keine allgemeine Konvertierung von einer Ganzzahl in ein Zeichen. Die folgenden Beispiele werden hier nicht ausgeführt; ihr Code wird bereitgestellt, um die jeweilige Operation zu zeigen.
Ein C#-char speichert eine UTF-16-Codeeinheit. Er kann Werte von 0 bis 65535 aufnehmen, aber manche Unicode-Zeichen benötigen zwei Codeeinheiten. Wenn Ihre Eingabe ein Unicode-Codepunkt ist und kein Wert, der in ein einzelnes char passen soll, verwenden Sie die Methode, die einen String zurückgibt.
Int in C# mit einem expliziten Cast in Char umwandeln
Ein expliziter Cast wandelt einen Ganzzahlwert in ein char um. Für einen Wert wie 102 stellt die entsprechende UTF-16-Codeeinheit f dar. Ein char ist eine UTF-16-Codeeinheit, daher verwandelt dieser Cast nicht jeden Unicode-Codepunkt in ein vollständiges Zeichen. Zusätzliche Codepunkte benötigen zwei Codeeinheiten und passen nicht in ein einzelnes char. In einem geprüften Kontext wird eine numerische Konvertierung außerhalb des Bereichs geprüft; in einem ungeprüften Kontext behält die Konvertierung die unteren 16 Bits bei. Halten Sie die Eingabe im char-Bereich, wenn Sie eine direkte Zuordnung wünschen.
using System;
public class Program
{
public static void Main()
{
int value = 102;
char character = (char)value;
Console.WriteLine($"(char){value} is {character}");
}
}
Int in C# mit Convert.ToChar() in Char umwandeln
Convert.ToChar() wandelt eine Ganzzahl im char-Bereich, von 0 bis 65535, in ein char um. Für ein int außerhalb dieses Bereichs löst es eine OverflowException aus. Wählen Sie diese Methode, wenn der Bereich geprüft werden soll, statt sich auf einen expliziten Cast zu verlassen. Der zurückgegebene Wert ist weiterhin eine einzelne UTF-16-Codeeinheit und keine vollständige Darstellung für jeden Unicode-Codepunkt.
using System;
public class Program
{
public static void Main()
{
int value = 65;
char character = Convert.ToChar(value);
Console.WriteLine($"Convert.ToChar({value}) is {character}");
}
}
Einen Unicode-Codepunkt in C# mit Char.ConvertFromUtf32() umwandeln
Wenn eine Ganzzahl einen Unicode-Codepunkt darstellt, gibt Char.ConvertFromUtf32() einen String zurück, der seine UTF-16-Darstellung enthält. Es akzeptiert gültige Unicode-Skalarwerte: Werte im Surrogatbereich und Werte oberhalb von U+10FFFF sind keine gültigen Eingaben. Ein Codepunkt im zusätzlichen Bereich wird durch zwei char-Werte dargestellt, daher ist der zurückgegebene String — nicht nur sein erstes Element — die vollständige Zeichendarstellung. Dies ist die geeignete Wahl, wenn die Ganzzahl einen Unicode-Codepunkt bezeichnet und Sie dessen Textdarstellung benötigen.
using System;
public class Program
{
public static void Main()
{
int codePoint = 0x1F600;
string character = Char.ConvertFromUtf32(codePoint);
Console.WriteLine(character);
}
}
Die erste Dezimalziffer eines Int in C# mit ToString() erhalten
value.ToString()[0] liefert das erste Zeichen im Dezimaltext der Ganzzahl; es wandelt den Zahlenwert nicht in das Zeichen um, das dieser Wert darstellt. Für einen nicht negativen Wert wie 80 ist dieses Zeichen die Ziffer 8. Für einen negativen Wert ist das erste Zeichen das Vorzeichen, dieser Ausdruck gibt also keine Ziffer zurück. Verwenden Sie ihn nur, wenn das Ziel darin besteht, die erste geschriebene Ziffer einer bekannten nicht negativen Ganzzahl zu untersuchen. Wenn Sie jede Ziffer verarbeiten müssen, behalten Sie den Wert als String oder verwenden Sie für diese Aufgabe geeignete numerische Operationen.
using System;
public class Program
{
public static void Main()
{
int value = 80;
char firstCharacter = value.ToString()[0];
Console.WriteLine($"value.ToString()[0] is {firstCharacter}");
}
}
Die richtige Int-zu-Char-Konvertierung in C# wählen
- Verwenden Sie einen expliziten Cast, wenn die Ganzzahl ein Wert ist, der direkt auf eine
char-Codeeinheit abgebildet werden soll. - Verwenden Sie
Convert.ToChar(), wenn der Wert gegen denchar-Bereich geprüft werden soll. - Verwenden Sie
Char.ConvertFromUtf32(), wenn die Ganzzahl ein gültiger Unicode-Codepunkt ist und das Ergebnis mehrere UTF-16-Codeeinheiten benötigen kann; lassen Sie den zurückgegebenen String unverändert. - Verwenden Sie
ToString()[0]nur, um das erste Dezimalziffernzeichen einer nicht negativen Ganzzahl zu erhalten.
Diese Methoden lösen unterschiedliche Aufgaben: Ein Cast und Convert.ToChar() geben ein einzelnes char zurück, Char.ConvertFromUtf32() gibt einen String für einen Unicode-Codepunkt zurück, und ToString()[0] liest ein Zeichen aus formatiertem Dezimaltext.