HOWTO · Csharp

C# Convertir Int en Char

Ce tutoriel enseigne comment convertir int en char en C#.

Sur cette page

En C#, choisissez la conversion en fonction de ce que l’entier représente : convertissez une valeur située dans la plage de char, utilisez Convert.ToChar() pour une conversion vérifiée, utilisez Char.ConvertFromUtf32() pour un point de code Unicode ou utilisez ToString()[0] pour lire le premier chiffre décimal d’un entier non négatif. Ces opérations renvoient des résultats différents, donc l’extraction de chiffres n’est pas une conversion générale d’un entier en caractère. Les exemples ci-dessous ne sont pas exécutés ici ; leur code est fourni pour montrer chaque opération.

Un char C# stocke une unité de code UTF-16. Il peut contenir des valeurs de 0 à 65535, mais certains caractères Unicode nécessitent deux unités de code. Si votre entrée est un point de code Unicode plutôt qu’une valeur destinée à tenir dans un seul char, utilisez la méthode qui renvoie une chaîne.

Convertir un int en char en C# avec une conversion explicite

Une conversion explicite convertit une valeur entière en char. Pour une valeur telle que 102, l’unité de code UTF-16 correspondante représente f. Un char est une unité de code UTF-16, donc cette conversion ne transforme pas chaque point de code Unicode en un caractère complet. Les points de code supplémentaires nécessitent deux unités de code et ne peuvent pas tenir dans un seul char. Dans un contexte vérifié, une conversion numérique hors plage est vérifiée ; dans un contexte non vérifié, la conversion conserve les 16 bits de poids faible. Conservez l’entrée dans la plage de char lorsque vous souhaitez une correspondance directe.

using System;

public class Program
{
    public static void Main()
    {
        int value = 102;
        char character = (char)value;
        Console.WriteLine($"(char){value} is {character}");
    }
}

Convertir un int en char en C# avec Convert.ToChar()

Convert.ToChar() convertit un entier situé dans la plage de char, de 0 à 65535, en char. Pour un int en dehors de cette plage, il lève OverflowException. Choisissez cette méthode lorsque vous souhaitez que la plage soit vérifiée plutôt que de vous fier à une conversion explicite. La valeur renvoyée reste une seule unité de code UTF-16, et non une représentation complète de chaque point de code Unicode.

using System;

public class Program
{
    public static void Main()
    {
        int value = 65;
        char character = Convert.ToChar(value);
        Console.WriteLine($"Convert.ToChar({value}) is {character}");
    }
}

Convertir un point de code Unicode en C# avec Char.ConvertFromUtf32()

Lorsqu’un entier représente un point de code Unicode, Char.ConvertFromUtf32() renvoie une chaîne contenant sa représentation UTF-16. Il accepte les valeurs scalaires Unicode valides : les valeurs situées dans la plage des substituts et les valeurs supérieures à U+10FFFF ne sont pas des entrées valides. Un point de code de la plage supplémentaire est représenté par deux valeurs char, donc la chaîne renvoyée — et pas seulement son premier élément — est la représentation complète du caractère. C’est le choix approprié lorsque l’entier identifie un point de code Unicode et que vous avez besoin de sa représentation textuelle.

using System;

public class Program
{
    public static void Main()
    {
        int codePoint = 0x1F600;
        string character = Char.ConvertFromUtf32(codePoint);
        Console.WriteLine(character);
    }
}

Obtenir le premier chiffre décimal d’un int en C# avec ToString()

value.ToString()[0] obtient le premier caractère du texte décimal de l’entier ; il ne convertit pas la valeur numérique en le caractère représenté par cette valeur. Pour une valeur non négative telle que 80, ce caractère est le chiffre 8. Pour une valeur négative, le premier caractère est le signe, donc cette expression ne renvoie pas un chiffre. Utilisez-la uniquement lorsque l’objectif est d’inspecter le premier chiffre écrit d’un entier non négatif connu. Si vous devez traiter chaque chiffre, conservez la valeur sous forme de chaîne ou utilisez des opérations numériques adaptées à cette tâche.

using System;

public class Program
{
    public static void Main()
    {
        int value = 80;
        char firstCharacter = value.ToString()[0];
        Console.WriteLine($"value.ToString()[0] is {firstCharacter}");
    }
}

Choisir la bonne conversion d’int en char en C#

  • Utilisez une conversion explicite lorsque l’entier est une valeur destinée à correspondre directement à une unité de code char.
  • Utilisez Convert.ToChar() lorsque la valeur doit être vérifiée par rapport à la plage de char.
  • Utilisez Char.ConvertFromUtf32() lorsque l’entier est un point de code Unicode valide et que le résultat peut nécessiter plusieurs unités de code UTF-16 ; conservez la chaîne renvoyée intacte.
  • Utilisez ToString()[0] uniquement pour obtenir le premier caractère de chiffre décimal d’un entier non négatif.

Ces méthodes résolvent des tâches différentes : une conversion explicite et Convert.ToChar() renvoient un seul char, Char.ConvertFromUtf32() renvoie une chaîne pour un point de code Unicode et ToString()[0] lit un caractère dans un texte décimal formaté.