Wie konvertiere ich ASCII-Code (0-255) in das entsprechende Zeichen?


135

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"

3
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.
McDowell

Antworten:


244

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.)
Tom Blodget

59

System.out.println((char)65); würde "A" drucken


2
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.
iAmLearning

29

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.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.
zjs

8
int number = 65;
char c = (char)number;

Es ist eine einfache Lösung


4
    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.


1

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));
}

1

Ein einfacher Weg, dasselbe zu tun:

Geben Sie cast in Integer in Zeichen ein, lassen Sie int ndie Ganzzahl sein, dann:

Char c=(char)n;
System.out.print(c)//char c will store the converted value.

0
    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);

Erklären Sie bitte Ihre Antwort
want2learn

0

Warum vereinfachen Sie es nicht zu einer Methode, die das ASCII-Zeichen zurückgibt?

public char toAscii (int input) {
    return (char)input;
}

-1

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);
        }
    }
}

-1

obere Antwort nur in der Nähe der Lösung des Problems. Hier ist deine Antwort:

Integer.decode (Character.toString (char c));

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.