Como posso converter, em Java, o código ASCII (que é um número inteiro do intervalo [0, 255]) para seu caractere ASCII correspondente?
Por exemplo:
65 -> "A"
102 -> "f"
Como posso converter, em Java, o código ASCII (que é um número inteiro do intervalo [0, 255]) para seu caractere ASCII correspondente?
Por exemplo:
65 -> "A"
102 -> "f"
Respostas:
Character.toString(char)
, stackoverflow.com/a/6210938/923560 fornece soluções adicionais.
(char)
designação? Em outras palavras, por que não posso simplesmente colocar Character.toString(i);
? (Java noob)
Integer
tipo, você receberá o erro "java.lang.Integer não pode ser convertido para java.lang.Character". Adicione um elenco ao int
primeiro, por exemplo: Character.toString((char)(int)myInteger);
i
valores (0-255) seriam do conjunto de caracteres ISO-8859-1. (O autor da questão pergunta se recusou a identificar quais "ASCII estendido" [termo vago] foi queria, exceto aceitando esta resposta.)
System.out.println((char)65);
imprimiria "A"
(char) 65
para descobrir qual personagem é.
String.valueOf
(
Character.toChars(int)
)
Supondo que o número inteiro esteja, como você diz, entre 0 e 255, você receberá uma matriz com um único caractere Character.toChars
, que se tornará uma cadeia de caracteres únicos quando transmitida para String.valueOf
.
O uso Character.toChars
é preferível a métodos que envolvem uma conversão de int
para char
( (char) i
por exemplo) por vários motivos, incluindo que Character.toChars
lançará um IllegalArgumentException
se você não conseguir validar corretamente o número inteiro enquanto a conversão engolirá o erro (conforme a especificação de conversões primitivas ), potencialmente fornecendo uma saída diferente da que você pretendia.
toChars
.
Character.toString((char) i)
é mais rápido que String.valueOf(Character.toChars(i))
. A execução de uma referência rápida de conversão de 1.000.000 de números inteiros aleatórios no intervalo especificado (100 vezes, para ser seguro) em minha máquina fornece um tempo médio de 153,07 nanossegundos contra 862,39 nanossegundos. No entanto, em qualquer aplicativo interessante, haverá coisas muito mais importantes para otimizar. O valor agregado do manuseio seguro e determinístico e a facilidade de expansão fora da faixa [0,255], caso necessário, superam o menor impacto no desempenho.
new String(new char[] { 65 })
Você terminará com uma sequência de comprimento um, cujo caractere único possui o código (ASCII) 65. Em Java, chars são tipos de dados numéricos.
Pode-se iterar de a a z como este
int asciiForLowerA = 97;
int asciiForLowerZ = 122;
for(int asciiCode = asciiForLowerA; asciiCode <= asciiForLowerZ; asciiCode++){
search(sCurrentLine, searchKey + Character.toString ((char) asciiCode));
}
Uma maneira mais fácil de fazer o mesmo:
Digite converter inteiro para caractere, int n
seja o inteiro e, em seguida:
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 que não simplificá-lo para um método que retorna o caractere ascii?
public char toAscii (int input) {
return (char)input;
}
Este é um exemplo, que mostra que, ao converter um int em char, é possível determinar o caractere correspondente em um 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);
}
}
}
resposta superior apenas perto de resolver o problema. aqui está sua resposta:
Código inteiro (Character.toString (char c));