Jak mogę przekonwertować w Javie kod ASCII (który jest liczbą całkowitą z zakresu [0, 255]) na odpowiadający mu znak ASCII?
Na przykład:
65 -> "A"
102 -> "f"
Jak mogę przekonwertować w Javie kod ASCII (który jest liczbą całkowitą z zakresu [0, 255]) na odpowiadający mu znak ASCII?
Na przykład:
65 -> "A"
102 -> "f"
Odpowiedzi:
Character.toString(char), stackoverflow.com/a/6210938/923560 zapewnia dodatkowe rozwiązania.
(char)wyznaczenia? Innymi słowy, dlaczego nie mogę po prostu powiedzieć Character.toString(i);? (Java noob)
Integertypu, pojawi się błąd „Nie można przesłać java.lang.Integer do java.lang.Character”. Dodaj obsadę do intpierwszej, np .: Character.toString((char)(int)myInteger);
iwartości (0-255) będzie od zestawu znaków ISO-8859-1. (Osoba zadająca pytanie odmówiła określenia, który „rozszerzony ASCII” [niejasny termin] był poszukiwany, chyba że zaakceptował tę odpowiedź.)
System.out.println((char)65);
wypisze „A”
(char) 65aby dowiedzieć się, jaki to znak.
String.valueOf(Character.toChars(int))
Zakładając, że liczba całkowita jest, jak mówisz, między 0 a 255, otrzymasz tablicę z pojedynczym znakiem z powrotem z Character.toChars, która stanie się ciągiem jednoznakowym po przekazaniu do String.valueOf.
Korzystanie Character.toCharszaleca się metody z udziałem obsady od intcelu char(tj (char) i) dla wielu powodów, w tym, że Character.toCharsrzuci IllegalArgumentExceptionjeśli nie uda się poprawnie zweryfikować całkowitą natomiast obsada będzie przełknąć błąd (na tym zwężenie specyfikacji prymitywne konwersje ), co potencjalnie daje wyjście inne niż zamierzone.
toChars.
Character.toString((char) i)jest szybsze niż String.valueOf(Character.toChars(i)). Przeprowadzenie szybkiego testu porównawczego konwersji 1000000 losowych liczb całkowitych w podanym zakresie (100 razy, aby być bezpiecznym) na moim komputerze daje średni czas 153,07 nanosekund w porównaniu z 862,39 nanosekund. Jednak w każdej interesującej aplikacji będą znacznie ważniejsze rzeczy do optymalizacji. Wartość dodana bezpiecznej, deterministycznej obsługi i łatwość rozszerzenia poza zakres [0,255], gdyby była wymagana, przeważa nad niewielkim spadkiem wydajności.
new String(new char[] { 65 })
Otrzymasz ciąg o długości jeden, którego pojedynczy znak ma kod (ASCII) 65. W Javie znaki są numerycznymi typami danych.
Można iterować od a do z w ten sposób
int asciiForLowerA = 97;
int asciiForLowerZ = 122;
for(int asciiCode = asciiForLowerA; asciiCode <= asciiForLowerZ; asciiCode++){
search(sCurrentLine, searchKey + Character.toString ((char) asciiCode));
}
Łatwiejszy sposób na zrobienie tego samego:
Wpisz rzutowaną liczbę całkowitą na znak, niech int nbędzie liczbą całkowitą, a następnie:
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);
Dlaczego nie uprościć go do metody, która zwraca znak ascii?
public char toAscii (int input) {
return (char)input;
}
To jest przykład, który pokazuje, że konwertując int na char, można określić odpowiedni znak w kodzie ASCII.
public class sample6
{
public static void main(String... asf)
{
for(int i =0; i<256; i++)
{
System.out.println( i + ". " + (char)i);
}
}
}
górna odpowiedź tylko przy rozwiązaniu problemu. oto twoja odpowiedź:
Integer.decode (Character.toString (char c));