Я 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 String як 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 як вихід.
Подяка цьому .
Я просто скопіював це сюди, щоб було зручно для інших.
Перетворити діаграму в 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.
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, що перетинається з індексом та середніми пальцями.
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, вам потрібно зробити це.
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);
Для цього ми могли б відразу скористатися строковими класами
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