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 den char-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.