Wie kann ich in Java den ASCII-Code (eine Ganzzahl aus dem Bereich [0, 255]) in das entsprechende ASCII-Zeichen konvertieren?
Beispielsweise:
65 -> "A"
102 -> "f"
Wie kann ich in Java den ASCII-Code (eine Ganzzahl aus dem Bereich [0, 255]) in das entsprechende ASCII-Zeichen konvertieren?
Beispielsweise:
65 -> "A"
102 -> "f"
Antworten:
Character.toString(char)
, bietet stackoverflow.com/a/6210938/923560 zusätzliche Lösungen.
(char)
Bezeichnung? Mit anderen Worten, warum kann ich nicht einfach sagen Character.toString(i);
? (Java Noob)
Integer
Typ nicht funktioniert . Sie erhalten den Fehler "java.lang.Integer kann nicht in java.lang.Character umgewandelt werden". Fügen Sie zuerst eine Besetzung hinzu int
, z. B.: Character.toString((char)(int)myInteger);
i
Werte (0-255) stammen aus dem Zeichensatz ISO-8859-1. (Der Fragesteller lehnte es ab zu identifizieren, welcher "erweiterte ASCII" [vage Begriff] gewünscht wurde, außer indem er diese Antwort akzeptierte.)
System.out.println((char)65);
würde "A" drucken
(char) 65
, um herauszufinden, um welchen Charakter es sich handelt.
String.valueOf
(
Character.toChars(int)
)
Angenommen, die Ganzzahl liegt, wie Sie sagen, zwischen 0 und 255, erhalten Sie ein Array mit einem einzelnen Zeichen zurück Character.toChars
, das bei Übergabe an eine einzelne Zeichenfolge wird String.valueOf
.
Die Verwendung Character.toChars
ist aus einer Reihe von Gründen Methoden vorzuziehen, an denen eine Umwandlung von int
bis char
(dh (char) i
) beteiligt ist, einschließlich Character.toChars
einer, IllegalArgumentException
wenn Sie die Ganzzahl nicht ordnungsgemäß validieren, während die Umwandlung den Fehler verschluckt (gemäß der verengenden primitiven Konvertierungsspezifikation ), was möglicherweise dazu führt eine andere Ausgabe als beabsichtigt.
toChars
.
Character.toString((char) i)
schneller ist als String.valueOf(Character.toChars(i))
. Das Ausführen eines schnellen Benchmarks zum Konvertieren von 1.000.000 zufälligen Ganzzahlen in dem angegebenen Bereich (100-mal, um sicher zu gehen) auf meinem Computer ergibt eine durchschnittliche Zeit von 153,07 Nanosekunden gegenüber 862,39 Nanosekunden. In jeder interessanten Anwendung müssen jedoch weitaus wichtigere Dinge optimiert werden. Der Mehrwert der sicheren, deterministischen Handhabung und der einfachen Erweiterung außerhalb des [0,255] -Bereichs, falls erforderlich, überwiegt den geringen Leistungseinbruch.
new String(new char[] { 65 })
Am Ende erhalten Sie eine Zeichenfolge mit der Länge eins, deren einzelnes Zeichen den (ASCII-) Code 65 hat. In Java sind Zeichen numerische Datentypen.
Man kann so von a nach z iterieren
int asciiForLowerA = 97;
int asciiForLowerZ = 122;
for(int asciiCode = asciiForLowerA; asciiCode <= asciiForLowerZ; asciiCode++){
search(sCurrentLine, searchKey + Character.toString ((char) asciiCode));
}
Ein einfacher Weg, dasselbe zu tun:
Geben Sie cast in Integer in Zeichen ein, lassen Sie int n
die Ganzzahl sein, dann:
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);
Warum vereinfachen Sie es nicht zu einer Methode, die das ASCII-Zeichen zurückgibt?
public char toAscii (int input) {
return (char)input;
}
Dies ist ein Beispiel, das zeigt, dass man durch Konvertieren eines int in char das entsprechende Zeichen in einen ASCII-Code bestimmen kann.
public class sample6
{
public static void main(String... asf)
{
for(int i =0; i<256; i++)
{
System.out.println( i + ". " + (char)i);
}
}
}
obere Antwort nur in der Nähe der Lösung des Problems. Hier ist deine Antwort:
Integer.decode (Character.toString (char c));