HOWTO · Java

Cómo convertir un carácter en un valor numérico ASCII en Java

Este artículo introduce la conversión de un carácter a un valor numérico ASCII en Java con varios métodos y ejemplos.

En esta página

Este artículo descubrirá los métodos más fáciles y efectivos para convertir un carácter dado en un valor numérico ASCII en Java con ejemplos.

Echar char a int para convertir un carácter en un valor ASCII en Java

Una de las formas más fáciles de convertir el carácter en un valor numérico ASCII es lanzar el carácter a int. Como estamos hablando de un solo carácter, no podemos usar varios.

Echa un vistazo al siguiente ejemplo. Fíjate que estamos usando el carácter a encerrado entre comillas simples, haciendo que su tipo de datos sea char.

public class Main {
  public static void main(String[] args) {
    int asciiValue = 'a';
    System.out.println("ASCII Numeric Value: " + asciiValue);
  }
}

Resultado:

ASCII Numeric Value: 97

getBytes(StandardCharsets.US_ASCII) para obtener el valor ASCII de un carácter en Java

Para que este ejemplo funcione, primero obtendremos nuestro carácter como una cadena y luego convertiremos esa cadena en un conjunto de bytes. StandardCharsets.US_ASCII se asegurará de que obtengamos el valor de salida correcto.

import java.nio.charset.StandardCharsets;

public class Main {
  public static void main(String[] args) {
    String s = "b";
    byte[] bytes = s.getBytes(StandardCharsets.US_ASCII);
    System.out.println("ASCII Numeric Value: " + bytes[0]);
  }
}

Resultado:

ASCII Numeric Value: 98

El beneficio de este enfoque es que podemos obtener directamente el valor ASCII de múltiples caracteres como los caracteres de una cadena.

Tenemos una cadena s que tiene 4 caracteres. Podemos obtener valores numéricos ASCII para todos estos caracteres como hemos hecho a continuación.

import java.nio.charset.StandardCharsets;

public class Main {
  public static void main(String[] args) {
    String s = "ball";
    byte[] bytes = s.getBytes(StandardCharsets.US_ASCII);
    System.out.println("ASCII Numeric Value of b: " + bytes[0]);
    System.out.println("ASCII Numeric Value of a: " + bytes[1]);
    System.out.println("ASCII Numeric Value of l: " + bytes[2]);
    System.out.println("ASCII Numeric Value of l: " + bytes[3]);
  }
}

Resultado:

ASCII Numeric Value: 98
ASCII Numeric Value: 97
ASCII Numeric Value: 108
ASCII Numeric Value: 108

String.chars() para convertir el carácter a valores ASCII en Java 9+

En este método, usaremos una API añadida en Java 9. Podemos obtener un IntStream usando String.chars() y luego un IntStream de objetos Integer usando .boxed(). Nos dará numéricamente los valores ASCII que luego podemos poner en una List<Integr> para hacer un bucle.

Este ejemplo toma la cadena building como entrada e imprime los valores ASCII de cada carácter de la cadena.

import java.util.List;
import java.util.stream.Collectors;

public class Main {
  public static void main(String[] args) {
    String stringValue = "building";
    List<Integer> listOfIntegers = stringValue.chars().boxed().collect(Collectors.toList());

    for (int i : listOfIntegers) {
      System.out.println("ASCII value " + i);
    }
  }
}

Resultado:

ASCII value 98
ASCII value 117
ASCII value 105
ASCII value 108
ASCII value 100
ASCII value 105
ASCII value 110
ASCII value 103