J'ai String name = "admin";
alors je faisString char = name.substring(0,1); //char="a"
Je veux convertir le char
en sa valeur ASCII (97), comment puis-je faire cela en java?
J'ai String name = "admin";
alors je faisString char = name.substring(0,1); //char="a"
Je veux convertir le char
en sa valeur ASCII (97), comment puis-je faire cela en java?
Réponses:
Très simple. Jetez simplement votre char
comme un int
.
char character = 'a';
int ascii = (int) character;
Dans votre cas, vous devez d'abord obtenir le caractère 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.
int ascii = (int)name.charAt(0);
Au lieu de cela:
String char = name.substring(0,1); //char="a"
Vous devez utiliser la charAt()
méthode.
char c = name.charAt(0); // c='a'
int ascii = (int)c;
Les nombreuses réponses qui prétendent montrer comment faire cela 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 demander comment obtenir la valeur numérique ASCII d'un caractère Java.
Mais pourquoi voulez-vous faire ça de toute façon? Qu'allez-vous faire de la valeur?
Si vous voulez la valeur numérique afin de pouvoir convertir la chaîne Java en chaîne ASCII, la vraie question est "comment encoder une chaîne Java en ASCII". Pour cela, utilisez l'objet StandardCharsets.US_ASCII
.
Si vous souhaitez 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.
Le crédit à cela .
Je viens de le copier ici pour que ce soit pratique pour les autres.
Convertissez le caractère en int.
String name = "admin";
int ascii = name.toCharArray()[0];
Aussi :
int ascii = name.charAt(0);
Il suffit de convertir le caractère en int.
char character = 'a';
int number = (int) character;
La valeur de number
sera 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]);
}
}
}
C'est simple, obtenez le caractère que vous voulez et convertissez-le en int.
String name = "admin";
int ascii = name.charAt(0);
Je sais que cela a déjà été répondu sous plusieurs formes, mais voici mon bout de code avec un regard pour parcourir tous les caractères.
Voici le code, commencé par 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
et char
. Une unité textuelle en Unicode est un graphème, qui est un point de code de base suivi de zéro ou plusieurs points de code de combinaison. Un point de code, en Java, est codé en UTF-16, ce qui peut nécessiter une ou deux unités de code 16 bits ( char
) pour un point de code. Pour itérer des points de code, consultez cette réponse . Le code devrait déjà être prêt pour la prochaine main U + 1F91E AVEC INDEX ET POINT DE CODE CROISÉ, par exemple.
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
}
Comme @Raedwald l'a souligné, l'Unicode de Java ne prend pas en charge tous les caractères pour obtenir une valeur ASCII. La méthode correcte (Java 1.7+) est la suivante:
byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
new String(byte[])
utilise encore un autre codage de caractères - le soi-disant système par défaut, qui varie selon le temps, les machines et les utilisateurs; presque jamais utile. Ce que vous appelez asciiString
est toujours UTF-16 parce que c'est tout ce que Java a.
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]
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 opter pour:
(int)a.charAt(index);
J'essayais la même chose, mais la meilleure et la meilleure solution serait d'utiliser charAt et pour accéder aux index, nous devrions créer un tableau d'entiers de [128] taille.
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
Le moyen le plus simple de le faire est:
Pour toute la chaîne en 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 String: Lorsque nous affectons chaque caractère au 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 un seul caractère:
String name = admin;
asciiValue = (int) name.charAt(0);// for character 'a'
System.out.println(asciiValue);
Pour cela, nous pourrions tout de suite utiliser les classes String
input.codePointAt(index);
Je voudrais donner une autre suggestion pour convertir l'ensemble 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()));
String char
compilera jamais. Peut-être voulez-vous renommer la variable enString ch