Come posso convertire, in Java, il codice ASCII (che è un numero intero compreso nell'intervallo [0, 255]) nel corrispondente carattere ASCII?
Per esempio:
65 -> "A"
102 -> "f"
Come posso convertire, in Java, il codice ASCII (che è un numero intero compreso nell'intervallo [0, 255]) nel corrispondente carattere ASCII?
Per esempio:
65 -> "A"
102 -> "f"
Risposte:
Character.toString(char)
, stackoverflow.com/a/6210938/923560 fornisce soluzioni aggiuntive.
(char)
designazione? In altre parole, perché non posso semplicemente mettere Character.toString(i);
? (Java noob)
Integer
tipo, otterrai un errore "java.lang.Integer non può essere trasmesso a java.lang.Character". Aggiungi un cast per int
primo, ad esempio: Character.toString((char)(int)myInteger);
i
valori (0-255) provengono dal set di caratteri ISO-8859-1. (La domanda che si è chiesta ha rifiutato di identificare quale "ASCII esteso" [termine vago] era voluto, tranne accettando questa risposta.)
System.out.println((char)65);
stamperebbe "A"
(char) 65
per scoprire di che personaggio si tratta.
String.valueOf
(
Character.toChars(int)
)
Supponendo che il numero intero sia, come dici tu, tra 0 e 255, otterrai un array con un solo carattere di ritorno Character.toChars
, che diventerà una stringa di un singolo carattere quando passerà a String.valueOf
.
L'uso Character.toChars
è preferibile ai metodi che coinvolgono un cast da int
a char
(cioè (char) i
) per una serie di motivi, incluso quello che Character.toChars
genererà un IllegalArgumentException
errore se non si convalida correttamente l'intero mentre il cast inghiottirà l'errore (secondo la specifica di conversione delle primitive restrittive ), potenzialmente dando un output diverso da quello che intendevi.
toChars
.
Character.toString((char) i)
è più veloce di String.valueOf(Character.toChars(i))
. Eseguire un rapido benchmark di conversione di 1.000.000 di numeri casuali nell'intervallo specificato (100 volte, per sicurezza) sulla mia macchina offre un tempo medio di 153,07 nanosecondi contro 862,39 nanosecondi. Tuttavia, in qualsiasi applicazione interessante, ci saranno cose molto più importanti da ottimizzare. Il valore aggiunto della manipolazione sicura e deterministica e della facilità di espansione al di fuori dell'intervallo [0,255] nel caso in cui fosse necessario supera il minor impatto sulle prestazioni.
new String(new char[] { 65 })
Si finirà con una stringa di lunghezza una, il cui singolo carattere ha il codice (ASCII) 65. In Java i caratteri sono tipi di dati numerici.
Si può iterare dalla a alla z in questo modo
int asciiForLowerA = 97;
int asciiForLowerZ = 122;
for(int asciiCode = asciiForLowerA; asciiCode <= asciiForLowerZ; asciiCode++){
search(sCurrentLine, searchKey + Character.toString ((char) asciiCode));
}
Un modo più semplice di fare lo stesso:
Digita cast intero su carattere, lascia che int n
sia l'intero, quindi:
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);
Perché non semplificarlo con un metodo che restituisce il carattere ASCII?
public char toAscii (int input) {
return (char)input;
}
Questo è un esempio, che mostra che convertendo un int in char, si può determinare il carattere corrispondente in un codice ASCII.
public class sample6
{
public static void main(String... asf)
{
for(int i =0; i<256; i++)
{
System.out.println( i + ". " + (char)i);
}
}
}
risposta superiore solo vicino a risolvere il problema. ecco la tua risposta:
Integer.decode (Character.toString (char c));