Dies ist kein Duplikat wie oben erwähnt. Dies ist keine Konvertierung von einer Ganzzahl, sondern von char (ascii)
Chathuranga Chandrasekara
11
Kein Duplikat von "Wie konvertiere ich von int nach String?" ... sowieso, FWIW, ASCII ist nur 7-Bit mit Werten [0, 127] ;-)
1
@phooji Ich denke, dass dieser Beitrag sagt, wie man 1 -> "1" etc '
konvertiert
1
@pst - es ist ASII erweitert ;-)
Belgi
3
@Belgi - Sie müssen Ihre Codierung explizit angeben, wenn Sie die Werte 128-255 korrekt transkodieren möchten. Der Begriff "erweitertes ASCII" ist nicht aussagekräftig.
Für MIDP 2 / CLDC 1.1-basierte Plattformen (die nicht vorhanden sind Character.toString(char), bietet stackoverflow.com/a/6210938/923560 zusätzliche Lösungen.
Abdull
Was ist der Grund für die (char)Bezeichnung? Mit anderen Worten, warum kann ich nicht einfach sagen Character.toString(i);? (Java Noob)
Adam Hughes
1
Beachten Sie, dass dies für den IntegerTyp 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);
gbmhunter
1
Die iWerte (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.)
REPL-Tipp: Wenn Sie JShell (Java 9) verwenden, können Sie das System.out weglassen. Geben Sie einfach ein (char) 65, um herauszufinden, um welchen Charakter es sich handelt.
DavidS
2
Bei der Frage geht es nicht um Drucken, sondern um Konvertieren.
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.toCharsist aus einer Reihe von Gründen Methoden vorzuziehen, an denen eine Umwandlung von intbis char(dh (char) i) beteiligt ist, einschließlich Character.toCharseiner, IllegalArgumentExceptionwenn 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.
Angenommen, die Ganzzahl liegt im Bereich von 0 bis 255 (wie Sie angeben ... und wie in der Frage angegeben), ist die Verwendung unnötig und suboptimal toChars.
Stephen C
5
Sie haben völlig Recht, dass so etwas 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.
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.
Antworten:
Character.toString ((char) i);
quelle
Character.toString(char)
, bietet stackoverflow.com/a/6210938/923560 zusätzliche Lösungen.(char)
Bezeichnung? Mit anderen Worten, warum kann ich nicht einfach sagenCharacter.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 hinzuint
, 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" druckenquelle
(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 wirdString.valueOf
.Die Verwendung
Character.toChars
ist aus einer Reihe von Gründen Methoden vorzuziehen, an denen eine Umwandlung vonint
bischar
(dh(char) i
) beteiligt ist, einschließlichCharacter.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.quelle
toChars
.Character.toString((char) i)
schneller ist alsString.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.Es ist eine einfache Lösung
quelle
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.
quelle
Man kann so von a nach z iterieren
quelle
Ein einfacher Weg, dasselbe zu tun:
Geben Sie cast in Integer in Zeichen ein, lassen Sie
int n
die Ganzzahl sein, dann:quelle
quelle
Warum vereinfachen Sie es nicht zu einer Methode, die das ASCII-Zeichen zurückgibt?
quelle
Dies ist ein Beispiel, das zeigt, dass man durch Konvertieren eines int in char das entsprechende Zeichen in einen ASCII-Code bestimmen kann.
quelle
obere Antwort nur in der Nähe der Lösung des Problems. Hier ist deine Antwort:
Integer.decode (Character.toString (char c));
quelle