HOWTO · Csharp

C# Convertir Int a Char

Este tutorial enseña cómo convertir int a char en C#.

En esta página

En C#, elija la conversión según lo que represente el entero: convierta un valor dentro del rango de char, use Convert.ToChar() para una conversión comprobada, use Char.ConvertFromUtf32() para un punto de código Unicode o use ToString()[0] para leer el primer dígito decimal de un entero no negativo. Estas operaciones devuelven resultados diferentes, por lo que la extracción de dígitos no es una conversión general de entero a carácter. Los ejemplos siguientes no se ejecutan aquí; su código se proporciona para mostrar cada operación.

Un char de C# almacena una unidad de código UTF-16. Puede contener valores de 0 a 65535, pero algunos caracteres Unicode necesitan dos unidades de código. Si su entrada es un punto de código Unicode y no un valor destinado a caber en un solo char, use el método que devuelve una cadena.

Convertir un int a char en C# con una conversión explícita

Una conversión explícita convierte un valor entero en un char. Para un valor como 102, la unidad de código UTF-16 correspondiente representa f. Un char es una unidad de código UTF-16, por lo que esta conversión no convierte cada punto de código Unicode en un carácter completo. Los puntos de código suplementarios necesitan dos unidades de código y no caben en un solo char. En un contexto comprobado, se comprueba una conversión numérica fuera de rango; en un contexto no comprobado, la conversión conserva los 16 bits inferiores. Mantenga la entrada dentro del rango de char cuando desee una correspondencia directa.

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 a char en C# con Convert.ToChar()

Convert.ToChar() convierte un entero dentro del rango de char, de 0 a 65535, en un char. Para un int fuera de ese rango, lanza OverflowException. Elija este método cuando desee que se compruebe el rango en lugar de depender de una conversión explícita. El valor devuelto sigue siendo una sola unidad de código UTF-16, no una representación completa de cada punto de código 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 punto de código Unicode en C# con Char.ConvertFromUtf32()

Cuando un entero representa un punto de código Unicode, Char.ConvertFromUtf32() devuelve una cadena que contiene su representación UTF-16. Acepta valores escalares Unicode válidos: los valores dentro del rango sustituto y los valores por encima de U+10FFFF no son entradas válidas. Un punto de código del rango suplementario se representa con dos valores char, por lo que la cadena devuelta —no solo su primer elemento— es la representación completa del carácter. Esta es la opción adecuada cuando el entero identifica un punto de código Unicode y necesita su representación de texto.

using System;

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

Obtener el primer dígito decimal de un int en C# con ToString()

value.ToString()[0] obtiene el primer carácter del texto decimal del entero; no convierte el valor numérico en el carácter representado por ese valor. Para un valor no negativo como 80, ese carácter es el dígito 8. Para un valor negativo, el primer carácter es el signo, por lo que esta expresión no devuelve un dígito. Úsela solo cuando el objetivo sea inspeccionar el primer dígito escrito de un entero no negativo conocido. Si necesita procesar cada dígito, mantenga el valor como cadena o use operaciones numéricas adecuadas para esa tarea.

using System;

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

Elegir la conversión correcta de int a char en C#

  • Use una conversión explícita cuando el entero sea un valor destinado a corresponderse directamente con una unidad de código char.
  • Use Convert.ToChar() cuando el valor deba comprobarse frente al rango de char.
  • Use Char.ConvertFromUtf32() cuando el entero sea un punto de código Unicode válido y el resultado pueda necesitar varias unidades de código UTF-16; mantenga intacta la cadena devuelta.
  • Use ToString()[0] solo para obtener el primer carácter de dígito decimal de un entero no negativo.

Estos métodos resuelven tareas diferentes: una conversión explícita y Convert.ToChar() devuelven un solo char, Char.ConvertFromUtf32() devuelve una cadena para un punto de código Unicode y ToString()[0] lee un carácter del texto decimal formateado.