Как я могу преобразовать в Java код ASCII (который является целым числом из диапазона [0, 255]) в соответствующий ему символ ASCII?
Например:
65 -> "A"
102 -> "f"
Как я могу преобразовать в Java код ASCII (который является целым числом из диапазона [0, 255]) в соответствующий ему символ ASCII?
Например:
65 -> "A"
102 -> "f"
Ответы:
Character.toString(char)
, stackoverflow.com/a/6210938/923560 предоставляет дополнительные решения.
(char)
обозначения? Другими словами, почему я не могу просто поставить Character.toString(i);
? (Java noob)
Integer
типа, вы получите ошибку «java.lang.Integer не может быть приведена к java.lang.Character». Добавьте приведение к int
первому, например: Character.toString((char)(int)myInteger);
i
значения (0-255) будет от набора символов ISO-8859-1. (Вопрос Аскер отказался определить , какой «расширенный ASCII» [неопределенный термин] разыскивают, за исключением того, принимая этот ответ.)
System.out.println((char)65);
напечатал бы "A"
(char) 65
чтобы узнать, что это за персонаж.
String.valueOf
(
Character.toChars(int)
)
Предполагая, что целое число, как вы говорите, находится в диапазоне от 0 до 255, вы получите массив с одним символом обратно Character.toChars
, который станет односимвольной строкой при передаче в String.valueOf
.
Использование Character.toChars
предпочтительнее методов, включающих приведение из int
в char
(т. Е. (char) i
) По ряду причин, в том числе, которые Character.toChars
будут выбрасывать, IllegalArgumentException
если вам не удастся правильно проверить целое число, в то время как приведение поглотит ошибку (согласно спецификации сужающих примитивных преобразований ), потенциально давая вывод, отличный от того, что вы намеревались.
toChars
.
Character.toString((char) i)
быстрее String.valueOf(Character.toChars(i))
. Выполнение быстрого теста на конвертацию 1 000 000 случайных целых чисел в заданном диапазоне (100 раз, чтобы быть безопасным) на моей машине дает среднее время 153,07 наносекунд против 862,39 наносекунд. Тем не менее, в любом интересном приложении будет гораздо более важные вещи для оптимизации. Дополнительная ценность безопасной, детерминированной обработки и простоты расширения за пределы диапазона [0,255], если это требуется, перевешивает незначительный удар по производительности.
new String(new char[] { 65 })
В итоге вы получите строку длиной один, единственный символ которой имеет код (ASCII) 65. В Java символы являются числовыми типами данных.
Можно итерировать от а до я, как это
int asciiForLowerA = 97;
int asciiForLowerZ = 122;
for(int asciiCode = asciiForLowerA; asciiCode <= asciiForLowerZ; asciiCode++){
search(sCurrentLine, searchKey + Character.toString ((char) asciiCode));
}
Более простой способ сделать то же самое:
Введите приведение целого числа к символу, пусть int n
будет целым числом, затем:
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);
Почему бы не упростить его до метода, который возвращает символ ascii?
public char toAscii (int input) {
return (char)input;
}
Это пример, который показывает, что путем преобразования int в char можно определить соответствующий символ в код ASCII.
public class sample6
{
public static void main(String... asf)
{
for(int i =0; i<256; i++)
{
System.out.println( i + ". " + (char)i);
}
}
}
верхний ответ только рядом с решением проблемы. вот твой ответ:
Integer.decode (Character.toString (char c));