Як я можу перетворити в 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))
. Запуск швидкого еталону перетворення 1000 000 випадкових цілих чисел у заданому діапазоні (100 разів, щоб бути безпечним) на моїй машині дає середній час 153,07 наносекунд проти 862,39 наносекунд. Однак у будь-якому цікавому застосуванні оптимізуватимуться набагато важливіші речі. Додана цінність безпечного, детермінованого поводження та простота розширення за межами [0,255] діапазону, якщо це буде потрібно, переважає незначний показник ефективності.
Можна повторити від a до z, як це
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));