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)
Integertipo, você receberá o erro "java.lang.Integer não pode ser convertido para java.lang.Character". Adicione um elenco ao intprimeiro, por exemplo: Character.toString((char)(int)myInteger);
ivalores (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) 65para 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 intpara char( (char) ipor exemplo) por vários motivos, incluindo que Character.toCharslançará um IllegalArgumentExceptionse 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 nseja 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));