У меня String name = "admin";
тогда яString char = name.substring(0,1); //char="a"
Я хочу преобразовать в char
его значение ASCII (97), как я могу сделать это в Java?
У меня String name = "admin";
тогда яString char = name.substring(0,1); //char="a"
Я хочу преобразовать в char
его значение ASCII (97), как я могу сделать это в Java?
Ответы:
Очень просто. Просто брось char
как int
.
char character = 'a';
int ascii = (int) character;
В вашем случае вам нужно сначала получить конкретного персонажа из строки, а затем разыграть его.
char character = name.charAt(0); // This gives the character 'a'
int ascii = (int) character; // ascii is now 97.
Хотя приведение не требуется явно, но это улучшает читаемость.
int ascii = character; // Even this will do the trick.
int ascii = (int)name.charAt(0);
Несколько ответов, показывающих, как это сделать, неверны, поскольку символы Java не являются символами ASCII. Java использует многобайтовую кодировку символов Unicode. Набор символов Unicode - это расширенный набор ASCII. Таким образом, в строке Java могут быть символы, которые не принадлежат ASCII. Такие символы не имеют числового значения ASCII, поэтому вопрос о том, как получить числовое значение ASCII символа Java, не подлежит рассмотрению.
Но почему ты так хочешь? Что вы собираетесь делать со значением?
Если вам нужно числовое значение, чтобы вы могли преобразовать строку Java в строку ASCII, реальный вопрос заключается в том, «как кодировать строку Java как ASCII». Для этого используйте объект StandardCharsets.US_ASCII
.
Если вы хотите преобразовать всю строку в сцепленные значения ASCII, вы можете использовать это -
String str = "abc"; // or anything else
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray())
sb.append((int)c);
BigInteger mInt = new BigInteger(sb.toString());
System.out.println(mInt);
при этом вы получите 979899 в качестве вывода.
Кредит на это .
Я просто скопировал его здесь, чтобы другим было удобно.
Конвертировать char в int.
String name = "admin";
int ascii = name.toCharArray()[0];
Также :
int ascii = name.charAt(0);
Просто приведите чарса к int.
char character = 'a';
int number = (int) character;
Значение number
будет 97.
public class Ascii {
public static void main(String [] args){
String a=args[0];
char [] z=a.toCharArray();
for(int i=0;i<z.length;i++){
System.out.println((int)z[i]);
}
}
}
Это просто, получить нужный символ и преобразовать его в int.
String name = "admin";
int ascii = name.charAt(0);
Я знаю, что на этот вопрос уже был дан ответ в нескольких формах, но вот мой фрагмент кода, в котором рассматриваются все символы.
Вот код, начатый с класса
public class CheckChValue { // Class name
public static void main(String[] args) { // class main
String name = "admin"; // String to check it's value
int nameLenght = name.length(); // length of the string used for the loop
for(int i = 0; i < nameLenght ; i++){ // while counting characters if less than the length add one
char character = name.charAt(i); // start on the first character
int ascii = (int) character; //convert the first character
System.out.println(character+" = "+ ascii); // print the character and it's value in ascii
}
}
}
string
и char
. Текстовая единица в Unicode - это графема, которая является базовой кодовой точкой, за которой следует ноль или более комбинаций кодовых точек. Кодовая точка в Java кодируется в UTF-16, для чего может потребоваться одна или две 16-битных кодовых единицы ( char
) для кодовой точки. Чтобы перебрать кодовые точки, посмотрите этот ответ . Например, код должен быть уже готов к появлению новой руки U + 1F91E с кодовой точкой INDEX и MIDDLE FINGERS CROSSED.
String str = "abc"; // or anything else
// Stores strings of integer representations in sequence
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray())
sb.append((int)c);
// store ascii integer string array in large integer
BigInteger mInt = new BigInteger(sb.toString());
System.out.println(mInt);
String name = "admin";
char[] ch = name.toString().toCharArray(); //it will read and store each character of String and store into char[].
for(int i=0; i<ch.length; i++)
{
System.out.println(ch[i]+
"-->"+
(int)ch[i]); //this will print both character and its value
}
Как указал @Raedwald, Unicode в Java не обслуживает все символы, чтобы получить значение ASCII. Правильный путь (Java 1.7+) заключается в следующем:
byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
new String(byte[])
использует еще одну кодировку символов - так называемое системное значение по умолчанию, которое зависит от времени, компьютеров и пользователей; почти никогда не полезно. То, что вы называете, asciiString
по-прежнему UTF-16, потому что это все, что есть в Java.
используя Java 9 => String.chars ()
String input = "stackoverflow";
System.out.println(input.chars().boxed().collect(Collectors.toList()));
вывод - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]
Вы можете проверить номер ASCII с этим кодом.
String name = "admin";
char a1 = a.charAt(0);
int a2 = a1;
System.out.println("The number is : "+a2); // the value is 97
Если я ошибаюсь, извиняюсь.
Если вы хотите ASCII-значение всех символов в строке. Вы можете использовать это:
String a ="asdasd";
int count =0;
for(int i : a.toCharArray())
count+=i;
и если вы хотите ASCII одного символа в строке, вы можете пойти для:
(int)a.charAt(index);
Я пытался сделать то же самое, но лучшим и простым решением было бы использовать charAt и для доступа к индексам мы должны создать целочисленный массив размером [128].
String name = "admin";
int ascii = name.charAt(0);
int[] letters = new int[128]; //this will allocate space with 128byte size.
letters[ascii]++; //increments the value of 97 to 1;
System.out.println("Output:" + ascii); //Outputs 97
System.out.println("Output:" + letters[ascii]); //Outputs 1 if you debug you'll see 97th index value will be 1.
В случае, если вы хотите отобразить ascii значения полной строки, вам нужно сделать это.
String name = "admin";
char[] val = name.toCharArray();
for(char b: val) {
int c = b;
System.out.println("Ascii value of " + b + " is: " + c);
}
В этом случае вы получите: Ascii значение a равно: 97 Ascii значение d равно: 100 Ascii значение m равно: 109 Ascii значение i равно: 105 Ascii значение n равно: 110
Самый простой способ сделать это:
Для всей строки в ASCII:
public class ConvertToAscii{
public static void main(String args[]){
String abc = "admin";
int []arr = new int[abc.length()];
System.out.println("THe asscii value of each character is: ");
for(int i=0;i<arr.length;i++){
arr[i] = abc.charAt(i); // assign the integer value of character i.e ascii
System.out.print(" "+arr[i]);
}
}
}
THe asscii value of each character is:
97 100 109 105 110
abc.charAt(i)
дается один символ массива String: когда мы назначаем каждый символ целочисленному типу, то компилятор выполняет преобразование типа как,
arr[i] = (int) character // Here, every individual character is coverted in ascii value
Но для одного персонажа:
String name = admin;
asciiValue = (int) name.charAt(0);// for character 'a'
System.out.println(asciiValue);
Для этого мы могли бы сразу использовать String Classe's
input.codePointAt(index);
Я хотел бы дать еще одно предложение по преобразованию всей строки в соответствующие коды ASCII, используя Java 8, например, «abcde» в «979899100101».
String input = "abcde";
System.out.println(
input.codePoints()
.mapToObj((t) -> "" + t)
.collect(joining()));
String char
когда-нибудь скомпилирует. Может быть, вы хотите переименовать переменную вString ch