L'ho fatto String name = "admin";
alloraString char = name.substring(0,1); //char="a"
Voglio convertire il char
suo valore ASCII (97), come posso farlo in Java?
L'ho fatto String name = "admin";
alloraString char = name.substring(0,1); //char="a"
Voglio convertire il char
suo valore ASCII (97), come posso farlo in Java?
Risposte:
Molto semplice. Trasmetti il tuo char
come int
.
char character = 'a';
int ascii = (int) character;
Nel tuo caso, devi prima ottenere il personaggio specifico dalla stringa e poi lanciarlo.
char character = name.charAt(0); // This gives the character 'a'
int ascii = (int) character; // ascii is now 97.
Sebbene il cast non sia richiesto esplicitamente, ma migliora la leggibilità.
int ascii = character; // Even this will do the trick.
int ascii = (int)name.charAt(0);
Invece di questo:
String char = name.substring(0,1); //char="a"
Dovresti usare il charAt()
metodo
char c = name.charAt(0); // c='a'
int ascii = (int)c;
Le diverse risposte che pretendono di mostrare come farlo sono tutte sbagliate perché i caratteri Java non sono caratteri ASCII. Java utilizza una codifica multibyte di caratteri Unicode. Il set di caratteri Unicode è un super set di ASCII. Quindi possono esserci caratteri in una stringa Java che non appartengono ad ASCII. Tali caratteri non hanno un valore numerico ASCII, pertanto non è possibile chiedere come ottenere il valore numerico ASCII di un carattere Java.
Ma perché vuoi farlo comunque? Che cosa hai intenzione di fare con il valore?
Se si desidera il valore numerico in modo da poter convertire la stringa Java in una stringa ASCII, la vera domanda è "come codificare una stringa Java come ASCII". Per questo, usa l'oggetto StandardCharsets.US_ASCII
.
Se desideri convertire l'intera stringa in valori ASCII concatenati, puoi utilizzare questo:
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);
in cui otterrai 979899 come output.
Ringraziamo questo .
L'ho appena copiato qui in modo che sarebbe conveniente per gli altri.
Converti il carattere in int.
String name = "admin";
int ascii = name.toCharArray()[0];
Anche :
int ascii = name.charAt(0);
Basta lanciare il carattere su un int.
char character = 'a';
int number = (int) character;
Il valore di number
sarà 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]);
}
}
}
È semplice, ottieni il personaggio che desideri e convertilo in int.
String name = "admin";
int ascii = name.charAt(0);
So che è già stata data risposta in diverse forme, ma ecco il mio codice con uno sguardo per esaminare tutti i personaggi.
Ecco il codice, iniziato con la classe
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
e char
. Un'unità testuale in Unicode è un grafema, che è un punto di codice di base seguito da zero o più punti di combinazione combinati. Un punto di codice, in Java, è codificato in UTF-16, che potrebbe richiedere una o due unità di codice a 16 bit ( char
) per un punto di codice . Per iterare i punti di codice, vedere questa risposta . Il codice dovrebbe essere già pronto per l'emergente U + 1F91E MANO CON INDICE E DENTI MEDI CODICE ATTRAVERSO, per esempio.
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
}
Come sottolineato da @Raedwald, Unicode di Java non soddisfa tutti i caratteri per ottenere il valore ASCII. Il modo corretto (Java 1.7+) è il seguente:
byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
new String(byte[])
utilizza ancora un'altra codifica dei caratteri: il cosiddetto default di sistema, che varia nel tempo, nelle macchine e negli utenti; quasi mai utile. Quello che chiami asciiString
è ancora UTF-16 perché è tutto ciò che Java ha.
utilizzando Java 9 => String.chars ()
String input = "stackoverflow";
System.out.println(input.chars().boxed().collect(Collectors.toList()));
uscita - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]
Se si desidera il valore ASCII di tutti i caratteri in una stringa. Puoi usare questo:
String a ="asdasd";
int count =0;
for(int i : a.toCharArray())
count+=i;
e se vuoi ASCII di un singolo carattere in una stringa puoi scegliere:
(int)a.charAt(index);
Stavo provando la stessa cosa, ma la soluzione migliore e semplice sarebbe usare charAt e per accedere agli indici dovremmo creare un array intero di dimensioni [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.
Nel caso in cui si desideri visualizzare i valori ASCII di String completa, è necessario eseguire questa operazione.
String name = "admin";
char[] val = name.toCharArray();
for(char b: val) {
int c = b;
System.out.println("Ascii value of " + b + " is: " + c);
}
Il tuo output, in questo caso, sarà: Ascii valore di a è: 97 Ascii valore di d è: 100 Ascii valore di m è: 109 Ascii valore di i è: 105 Ascii valore di n è: 110
Il modo più semplice per farlo è:
Per l'intera stringa in 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)
fornisce il singolo carattere dell'array String: quando assegniamo ciascun carattere al tipo intero, il compilatore digita la conversione come,
arr[i] = (int) character // Here, every individual character is coverted in ascii value
Ma, per singolo personaggio:
String name = admin;
asciiValue = (int) name.charAt(0);// for character 'a'
System.out.println(asciiValue);
Per questo potremmo subito usare String classe's
input.codePointAt(index);
Vorrei dare un altro suggerimento su come convertire l'intera stringa in corrispondenti codici ASCII, usando java 8 per esempio, "abcde" in "979899100101".
String input = "abcde";
System.out.println(
input.codePoints()
.mapToObj((t) -> "" + t)
.collect(joining()));
String char
mai compilato. Forse vuoi rinominare la variabile inString ch