Mam String name = "admin";
to robięString char = name.substring(0,1); //char="a"
Chcę przekonwertować na char
jego wartość ASCII (97), jak mogę to zrobić w java?
Mam String name = "admin";
to robięString char = name.substring(0,1); //char="a"
Chcę przekonwertować na char
jego wartość ASCII (97), jak mogę to zrobić w java?
Odpowiedzi:
Bardzo prosty. Po prostu rzuć char
jako int
.
char character = 'a';
int ascii = (int) character;
W twoim przypadku musisz najpierw pobrać konkretną postać ze sznurka, a następnie ją rzucić.
char character = name.charAt(0); // This gives the character 'a'
int ascii = (int) character; // ascii is now 97.
Chociaż rzutowanie nie jest wymagane jawnie, ale poprawia czytelność.
int ascii = character; // Even this will do the trick.
int ascii = (int)name.charAt(0);
Kilka odpowiedzi, które rzekomo pokazują, jak to zrobić, jest błędnych, ponieważ znaki Java nie są znakami ASCII. Java wykorzystuje wielobajtowe kodowanie znaków Unicode. Zestaw znaków Unicode to super zestaw znaków ASCII. Zatem w ciągu Java mogą znajdować się znaki, które nie należą do ASCII. Takie znaki nie mają wartości liczbowej ASCII, więc nie można odpowiedzieć na pytanie, jak uzyskać wartość liczbową ASCII znaku Java.
Ale dlaczego tak czy owak chcesz to zrobić? Co zamierzasz zrobić z wartością?
Jeśli chcesz mieć wartość liczbową, aby móc przekonwertować ciąg Java na ciąg ASCII, prawdziwe pytanie brzmi: „jak zakodować ciąg Java jako ASCII”. W tym celu użyj obiektu StandardCharsets.US_ASCII
.
Jeśli chcesz przekonwertować cały ciąg na połączone wartości ASCII, możesz użyć tego -
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);
gdzie otrzymasz wynik 979899.
Kredyt na to .
Po prostu skopiowałem to tutaj, aby było wygodne dla innych.
Przekonwertuj znak na int.
String name = "admin";
int ascii = name.toCharArray()[0];
Również :
int ascii = name.charAt(0);
Po prostu rzuć char na int.
char character = 'a';
int number = (int) character;
Wartość number
wyniesie 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]);
}
}
}
To proste, pobierz żądaną postać i przekonwertuj ją na int.
String name = "admin";
int ascii = name.charAt(0);
Wiem, że odpowiedź na to pytanie została już udzielona w kilku formach, ale oto mój fragment kodu, który ma przejrzeć wszystkie znaki.
Oto kod, rozpoczęty od klasy
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
i char
. Jednostką tekstową w Unicode jest grafem, który jest podstawowym punktem kodowym, po którym następuje zero lub więcej łączących punktów kodowych. Punkt kodowy w Javie jest kodowany w UTF-16, co może wymagać jednej lub dwóch 16-bitowych jednostek kodu ( char
) dla punktu kodowego. Aby dokonać iteracji punktów kodowych, zobacz tę odpowiedź . Kod powinien być już gotowy na przykład dla nadchodzącej RĘKI U + 1F91E Z INDEKSEM I SKRZYŻOWANYMI ŚRODKOWYMI PALCAMI.
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
}
Jak zauważył @Raedwald, Java Unicode nie obsługuje wszystkich znaków, aby uzyskać wartość ASCII. Prawidłowy sposób (Java 1.7+) jest następujący:
byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
new String(byte[])
stosuje jeszcze inne kodowanie znaków - tak zwane domyślne systemowe, które różnią się w zależności od czasu, maszyn i użytkowników; prawie nigdy nie przydatne. To, co nazywasz, asciiString
to nadal UTF-16, ponieważ to wszystko, co ma Java.
przy użyciu Java 9 => String.chars ()
String input = "stackoverflow";
System.out.println(input.chars().boxed().collect(Collectors.toList()));
produkcja - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]
Jeśli chcesz uzyskać wartość ASCII wszystkich znaków w łańcuchu. Możesz użyć tego:
String a ="asdasd";
int count =0;
for(int i : a.toCharArray())
count+=i;
a jeśli chcesz ASCII pojedynczego znaku w łańcuchu, możesz wybrać:
(int)a.charAt(index);
Próbowałem tego samego, ale najlepszym i łatwym rozwiązaniem byłoby użycie charAt i aby uzyskać dostęp do indeksów, powinniśmy utworzyć tablicę liczb całkowitych o rozmiarze [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.
W przypadku, gdy chcesz wyświetlić wartości ascii pełnego ciągu, musisz to zrobić.
String name = "admin";
char[] val = name.toCharArray();
for(char b: val) {
int c = b;
System.out.println("Ascii value of " + b + " is: " + c);
}
Twój wynik w tym przypadku będzie wyglądał następująco: Ascii wartość a wynosi: 97 Ascii wartość d wynosi: 100 Ascii wartość m wynosi: 109 Ascii wartość i wynosi: 105 Ascii wartość n wynosi: 110
Najłatwiej to zrobić:
Dla całego łańcucha do 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)
daje pojedynczy znak tablicy String: Kiedy przypisujemy każdy znak do typu całkowitego, kompilator wykonuje konwersję typów jako,
arr[i] = (int) character // Here, every individual character is coverted in ascii value
Ale dla pojedynczego znaku:
String name = admin;
asciiValue = (int) name.charAt(0);// for character 'a'
System.out.println(asciiValue);
Do tego moglibyśmy od razu użyć klas String
input.codePointAt(index);
Chciałbym dać jeszcze jedną sugestię, aby przekonwertować cały ciąg znaków na odpowiadające mu kody ascii, używając na przykład języka java 8, „abcde” na „979899100101”.
String input = "abcde";
System.out.println(
input.codePoints()
.mapToObj((t) -> "" + t)
.collect(joining()));
String char
kiedykolwiek się skompiluje. Być może zechcesz zmienić nazwę zmiennej naString ch