У меня 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.
просто другой подход
String s = "admin";
byte[] bytes = s.getBytes("US-ASCII");
bytes[0]
будет представлять ascii a.. и, следовательно, другие символы во всем массиве.
Вместо этого:
String char = name.substring(0,1); //char="a"
Вы должны использовать метод charAt()
.
char c = name.charAt(0); // c='a'
int ascii = (int)c;
Если вы хотите преобразовать всю строку в конкатенированные значения 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 в качестве вывода.
Подтвердите .
Я просто скопировал его здесь, чтобы это было удобно для других.
Несколько ответов, показывающих, как это сделать, неверны, поскольку символы Java не являются символами ASCII. Java использует многобайтовую кодировку символов Unicode. Набор символов Unicode - это расширенный набор символов ASCII. Таким образом, в строке Java могут быть символы, которые не принадлежат ASCII. Такие символы не имеют числового значения ASCII, поэтому вопрос о том, как получить числовое значение ASCII символа Java, остается без ответа.
Но почему ты так хочешь? Что вы собираетесь делать со значением?
Если вам нужно числовое значение, чтобы вы могли преобразовать строку Java в строку ASCII, реальный вопрос заключается в том, "как кодировать строку Java в виде ASCII". Для этого используйте объект StandardCharsets.US_ASCII
.
Преобразуйте char в int.
String name = "admin";
int ascii = name.toCharArray()[0];
Также:
int ascii = name.charAt(0);
Просто введите char в int.
char character = 'a';
int number = (int) character;
Значение number
будет равно 97.
Это просто, получить нужный символ и преобразовать его в int.
String name = "admin";
int ascii = name.charAt(0);
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);
Я знаю, что это уже ответило в нескольких формах, но вот мой бит кода, чтобы просмотреть все символы.
Вот код, начинающийся с класса
public class CheckChValue { // Class name
public static void main(String[] args) { // class main
String name = "admin"; // String to check it 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 value in ascii
}
}
}
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
}
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]);
}
}
}
Как отметил @Raedwald, Java Unicode не обслуживает все символы, чтобы получить значение ASCII. Правильный способ (Java 1.7 +) выглядит следующим образом:
byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
Легкий способ для этого:
int character = 'a';
Если вы напечатаете "символ", вы получите 97.
Или вы можете использовать Stream API для 1 символа или String, начиная с Java 1.8:
public class ASCIIConversion {
public static void main(String[] args) {
String text = "adskjfhqewrilfgherqifvehwqfjklsdbnf";
text.chars()
.forEach(System.out::println);
}
}
Вы можете проверить номер 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 одного символа в String, вы можете пойти:
(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 значение я равно: 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);
используя 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]
Для этого мы могли бы сразу использовать String Classe's
input.codePointAt(index);
Я хотел бы дать еще одно предложение, чтобы преобразовать всю строку в соответствующие коды ASCII, используя Java 8, например, "abcde" в "979899100101".
String input = "abcde";
System.out.println(
input.codePoints()
.mapToObj((t) -> "" + t)
.collect(joining()));