В Java мы можем привести char
к int
, чтобы получить значение ASCII char
.
char aChar = 'a'; //int ascii = (int) aChar; // explicitly cast, optional, improves readability int ascii = aChar; // implicit cast, auto cast char to int, System.out.println(ascii); // 97
Явный бросок (int)символ
является необязательным, если мы присвоим символ
целому числу, Java автоматически приведет символ
к int
.
1. Преобразовать символ в ASCII
Этот пример Java преобразует символ
в значение ASCII, и мы можем использовать символ .Точары
чтобы вернуть значение ASCII обратно в символ.
package com.mkyong.basic; public class JavaAsciiExample1 { public static void main(String[] args) { // convert char to ASCII char aChar = 'a'; int ascii = aChar; // auto cast char to int System.out.println(ascii); // 97 // convert ASCII to char char[] chars = Character.toChars(ascii); System.out.println(chars); // a char aChar2 = (char) ascii; // or downcast int to char, it works. System.out.println(aChar2); // a } }
Выход
97 a a
В ASCII десятичная дробь от 0 до 31 и 127 представляют материалы, связанные с файлами; печатаемые символы от 32 до 126. Чтобы преобразовать ASCII обратно в символ или строку, мы можем выполнить простую проверку диапазона, чтобы убедиться, что это допустимое значение ASCII.
public static char asciiToChar(final int ascii) { if (ascii < 0 || ascii >= 127) { throw new IllegalArgumentException("Invalid ASCII value!"); } return (char) ascii; }
2. Преобразование строки в ASCII
2.1 Мы можем использовать String.getBytes(стандартные наборы символов. US_ASCII)
для преобразования строки
в массив байтов |/байт [] и передайте
байт в
int , чтобы получить значение ASCII.
package com.mkyong.basic; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; public class JavaAsciiExample2 { public static void main(String[] args) { String input = "abcdefg"; byte[] bytes = input.getBytes(StandardCharsets.US_ASCII); // print the first byte System.out.println(bytes[0]); // 97 Listresult = new ArrayList<>(); // convert bytes to ascii for (byte aByte : bytes) { int ascii = (int) aByte; // byte -> int result.add(ascii); } System.out.println(result.toString()); // [97, 98, 99, 100, 101, 102, 103] } }
Выход
97 [97, 98, 99, 100, 101, 102, 103]
2.2 Java 9, есть новый API String.char()
для преобразования строки
в Входной поток
, за которым следует .в штучной упаковке ()
, и он преобразуется в Поток <Целое число>
.
String input = "abcdefg"; Listcollect = input .chars() // IntStream .boxed() // Stream , ASCII values .collect(Collectors.toList()); // Returns a List collect.forEach(System.out::println);
Выход
97 98 99 100 101 102 103
2.3 Для преобразования значений ASCII обратно в строку мы можем использовать символ .toString
, он принимает целое число (кодовую точку) в качестве аргумента и возвращает строку.
package com.mkyong.basic; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class JavaAsciiExample3 { public static void main(String[] args) { Listascii = Arrays.asList(97, 98, 99, 100, 101, 102, 103); // Java 8 stream String result = ascii.stream() .map(x -> Character.toString(x)) // int -> string .collect(Collectors.joining()); // return a string System.out.println(result); } }
Выход
abcdefg
Рекомендации
Оригинал: “https://mkyong.com/java/how-to-convert-character-to-ascii-in-java/”