J'ai String name = "admin";
alors je fais String char = name.substring(0,1); //char="a"
Je veux convertir la char
en sa valeur ASCII (97), comment puis-je faire cela en Java
Très simple. Il suffit de lancer votre char
en tant que int
.
char character = 'a';
int ascii = (int) character;
Dans votre cas, vous devez d'abord obtenir le personnage spécifique de la chaîne, puis le lancer.
char character = name.charAt(0); // This gives the character 'a'
int ascii = (int) character; // ascii is now 97.
Bien que la conversion ne soit pas requise explicitement, elle améliore la lisibilité.
int ascii = character; // Even this will do the trick.
juste une approche différente
String s = "admin";
byte[] bytes = s.getBytes("US-ASCII");
bytes[0]
représentera ascii d'un .. et donc les autres caractères de tout le tableau.
Au lieu de cela:
String char = name.substring(0,1); //char="a"
Vous devriez utiliser la méthode charAt()
.
char c = name.charAt(0); // c='a'
int ascii = (int)c;
Si vous voulez convertir la chaîne entière en valeurs ASCII concaténées, vous pouvez utiliser ceci -
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);
dans lequel vous obtiendrez 979899 en sortie.
Crédit à ceci .
Je viens de le copier ici pour que ce soit pratique pour les autres.
Les différentes réponses censées montrer comment faire sont toutes fausses car les caractères Java ne sont pas des caractères ASCII. Java utilise un codage multi-octets de caractères Unicode. Le jeu de caractères Unicode est un super jeu d’ASCII. Il peut donc y avoir des caractères dans une chaîne Java qui n'appartiennent pas à ASCII. Ces caractères n'ont pas de valeur numérique ASCII, il est donc impossible de savoir comment obtenir la valeur numérique ASCII d'un caractère Java.
Mais pourquoi tu veux faire ça quand même? Qu'allez-vous faire avec la valeur?
Si vous voulez que la valeur numérique vous permette de convertir la chaîne Java en chaîne ASCII, la question real est la suivante: "comment puis-je coder une chaîne Java en tant que ASCII" Pour cela, utilisez l'objet StandardCharsets.US_ASCII.
Convertir le caractère en int.
String name = "admin";
int ascii = name.toCharArray()[0];
Également :
int ascii = name.charAt(0);
Il suffit de lancer le char à un int.
char character = 'a';
int number = (int) character;
La valeur de number
sera 97.
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);
Ou vous pouvez utiliser Stream API pour 1 caractère ou une chaîne commençant par Java 1.8:
public class ASCIIConversion {
public static void main(String[] args) {
String text = "adskjfhqewrilfgherqifvehwqfjklsdbnf";
text.chars()
.forEach(System.out::println);
}
}
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]);
}
}
}
Un moyen facile pour cela est:
int character = 'a';
Si vous imprimez "personnage", vous obtenez 97.
C'est simple, obtenez le personnage que vous voulez et convertissez-le en int.
String name = "admin";
int ascii = name.charAt(0);
Comme @Raedwald l'a souligné, le format Unicode de Java ne prend pas en compte tous les caractères pour obtenir la valeur ASCII. La manière correcte (Java 1.7+) est la suivante:
byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
Je sais que cela a déjà été répondu sous plusieurs formes, mais voici mon morceau de code avec une apparence pour parcourir tous les caractères.
Voici le code, commencé avec 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 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
}
J'essayais la même chose, mais la solution la plus simple et la plus simple serait d'utiliser charAt. Pour accéder aux index, nous devrions créer un tableau entier de taille [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.
Si vous souhaitez afficher les valeurs ascii de la chaîne complète, vous devez le faire.
String name = "admin";
char[] val = name.toCharArray();
for(char b: val) {
int c = b;
System.out.println("Ascii value of " + b + " is: " + c);
}
Votre sortie dans ce cas sera: La valeur ascii de a est: 97 La valeur ascii de d est: 100 La valeur ascii de m est: 109 La valeur ascii de i est: 105 La valeur ascii de n est: 110
Si vous voulez la valeur ASCII de tous les caractères d'une chaîne. Vous pouvez utiliser ceci:
String a ="asdasd";
int count =0;
for(int i : a.toCharArray())
count+=i;
et si vous voulez ASCII d’un seul caractère dans une chaîne, vous pouvez choisir:
(int)a.charAt(index);
Vous pouvez vérifier le numéro ASCII avec ce code.
String name = "admin";
char a1 = a.charAt(0);
int a2 = a1;
System.out.println("The number is : "+a2); // the value is 97
Si je me trompe, excuses-moi.
en utilisant Java 9 => String.chars ()
String input = "stackoverflow";
System.out.println(input.chars().boxed().collect(Collectors.toList()));
sortie - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]
Pour cela nous pourrions tout de suite utiliser String classe's
input.codePointAt(index);
Je voudrais donner une autre suggestion quant à la conversion complète de la chaîne en codes ascii correspondants, en utilisant Java 8 par exemple, "abcde" en "979899100101".
String input = "abcde";
System.out.println(
input.codePoints()
.mapToObj((t) -> "" + t)
.collect(joining()));
Le moyen facile de faire cela est:
Pour une chaîne entière dans 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)
donne le caractère unique du tableau de chaînes: Lorsque nous affectons chaque caractère à un type entier, le compilateur effectue la conversion de type comme,arr[i] = (int) character // Here, every individual character is coverted in ascii value
Mais, pour caractère unique:
String name = admin;
asciiValue = (int) name.charAt(0);// for character 'a'
System.out.println(asciiValue);