web-dev-qa-db-fra.com

Convertir le caractère en ASCII valeur numérique en java

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

136
Celta

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.
227
SudoRahul

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.

43
stinepike

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;
18
christopher

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.

10
user1721904

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.

9
Raedwald

Convertir le caractère en int.

    String name = "admin";
    int ascii = name.toCharArray()[0];

Également :

int ascii = name.charAt(0);
4
Vineet Singla

Il suffit de lancer le char à un int.

char character = 'a';
int number = (int) character;

La valeur de number sera 97.

2
Daniel Lerps
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);
1
Sandeepp Sah

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);
    }
}
1
matua
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]);
        }
    }
}
1
yeswanth g

Un moyen facile pour cela est:

    int character = 'a';

Si vous imprimez "personnage", vous obtenez 97.

1
ktlawal

C'est simple, obtenez le personnage que vous voulez et convertissez-le en int.

String name = "admin";
int ascii = name.charAt(0);
1

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)
1
Karthik R

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
    }
}

}

1
gcclinux
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
}
1
iAsghar Hussain

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

0
Siddhartha Thota

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);
0
Vikram Singh

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. 

0
Sin Nombre

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]

0
Anurag_BEHS

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()));
0
piyush tyagi

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]);
      }
    }
}


La sortie est:  

THe asscii value of each character is: 97 100 109 105 110


Ici, 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);

0
susan097