¿Cómo puedo convertir, en Java, el código ASCII (que es un entero del rango [0, 255]) a su carácter ASCII correspondiente?
Por ejemplo:
65 -> "A"
102 -> "f"
¿Cómo puedo convertir, en Java, el código ASCII (que es un entero del rango [0, 255]) a su carácter ASCII correspondiente?
Por ejemplo:
65 -> "A"
102 -> "f"
Respuestas:
Character.toString(char)
, stackoverflow.com/a/6210938/923560 proporciona soluciones adicionales.)
(char)
designación? En otras palabras, ¿por qué no puedo simplemente poner Character.toString(i);
? (Novato de Java)
Integer
tipo, obtendrá un error "java.lang.Integer no se puede convertir en java.lang.Character". Agregue un elenco al int
primero, por ejemplo: Character.toString((char)(int)myInteger);
i
valores (0-255) serían del conjunto de caracteres ISO-8859-1. (El autor de la pregunta no quiso identificar qué "ASCII extendido" [término vago] era deseado, excepto al aceptar esta respuesta.)
System.out.println((char)65);
imprimiría "A"
(char) 65
para averiguar qué personaje es.
String.valueOf
(
Character.toChars(int)
)
Suponiendo que el entero esté, como usted dice, entre 0 y 255, obtendrá una matriz con un solo carácter Character.toChars
, que se convertirá en una cadena de un solo carácter cuando se pase aString.valueOf
.
El uso Character.toChars
es preferible a los métodos que involucran una conversión de int
a char
(es decir (char) i
) por una serie de razones, incluida la que Character.toChars
arrojará un IllegalArgumentException
error si no valida correctamente el entero mientras que la conversión se tragará el error (según la especificación de conversiones primitivas de estrechamiento ), lo que podría dar una salida diferente a la que pretendía.
toChars
.
Character.toString((char) i)
es más rápido que String.valueOf(Character.toChars(i))
. Ejecutar un punto de referencia rápido para convertir 1,000,000 enteros aleatorios en el rango dado (100 veces, para estar seguro) en mi máquina da un tiempo promedio de 153.07 nanosegundos frente a 862.39 nanosegundos. Sin embargo, en cualquier aplicación interesante, habrá cosas mucho más importantes para optimizar. El valor agregado del manejo seguro y determinista y la facilidad de expansión fuera del rango [0,255] en caso de que sea necesario supera el impacto de rendimiento menor.
new String(new char[] { 65 })
Terminará con una cadena de longitud uno, cuyo carácter único tiene el código (ASCII) 65. En Java, los caracteres son tipos de datos numéricos.
Uno puede iterar de la A a la Z así
int asciiForLowerA = 97;
int asciiForLowerZ = 122;
for(int asciiCode = asciiForLowerA; asciiCode <= asciiForLowerZ; asciiCode++){
search(sCurrentLine, searchKey + Character.toString ((char) asciiCode));
}
Una forma más fácil de hacer lo mismo:
Escriba cast integer to character, int n
sea el entero, luego:
Char c=(char)n;
System.out.print(c)//char c will store the converted value.
for (int i = 0; i < 256; i++) {
System.out.println(i + " -> " + (char) i);
}
char lowercase = 'f';
int offset = (int) 'a' - (int) 'A';
char uppercase = (char) ((int) lowercase - offset);
System.out.println("The uppercase letter is " + uppercase);
String numberString = JOptionPane.showInputDialog(null,
"Enter an ASCII code:",
"ASCII conversion", JOptionPane.QUESTION_MESSAGE);
int code = (int) numberString.charAt(0);
System.out.println("The character for ASCII code "
+ code + " is " + (char) code);
¿Por qué no simplificarlo a un método que devuelve el carácter ascii?
public char toAscii (int input) {
return (char)input;
}
Este es un ejemplo, que muestra que al convertir un int a char, se puede determinar el carácter correspondiente a un código ASCII.
public class sample6
{
public static void main(String... asf)
{
for(int i =0; i<256; i++)
{
System.out.println( i + ". " + (char)i);
}
}
}
respuesta superior solo cerca de resolver el problema. Heres su respuesta:
Integer.decode (Character.toString (char c));