236 votes

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

J'ai String name = "admin";
alors je fais String charValue = name.substring(0,1); //charValue="a"

Je veux convertir le charValue à sa valeur ASCII (97), comment puis-je faire cela en java ?

2 votes

JW va String char jamais compilé. Peut-être que vous voulez renommer la variable en String ch

0 votes

ASCII ? Êtes-vous sûr que c'est ce que vous voulez ? Java utilise le codage de caractères UTF-16 du jeu de caractères Unicode (tout comme JavaScript, .NET, VBA, VB4/5/6, NCHAR, NVARCHAR, NTFS, Windows API, ). Les réponses se répartissent en plusieurs catégories : réponse explicite sur l'ASCII, réponse sur l'UTF-16 et réponse sur l'ASCII par le biais de plusieurs raccourcis à partir de l'UTF-16 (et certaines sont tout simplement fausses).

397voto

R.J Points 21942

Très simple. Il suffit de lancer 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 de caractères, puis le convertir.

char character = name.charAt(0); // This gives the character 'a'
int ascii = (int) character; // ascii is now 97.

Bien que le cast ne soit pas requis explicitement, il améliore la lisibilité.

int ascii = character; // Even this will do the trick.

55voto

Nobody Points 30

Juste une approche différente

    String s = "admin";
    byte[] bytes = s.getBytes("US-ASCII");

bytes[0] représentera l'ascii de a.. et donc les autres caractères de l'ensemble du tableau.

23voto

christopher Points 15114

Au lieu de ça :

String char = name.substring(0,1); //char="a"

Vous devez utiliser le charAt() método.

char c = name.charAt(0); // c='a'
int ascii = (int)c;

17voto

Raedwald Points 8862

Les différentes réponses qui prétendent montrer comment faire sont toutes fausses car les caractères Java ne sont pas des caractères ASCII. Java utilise un codage multi-octet des caractères Unicode. Le jeu de caractères Unicode est un super jeu de caractères ASCII. Il peut donc y avoir des caractères dans une chaîne Java qui n'appartiennent pas à l'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 quand même le faire ? Qu'allez-vous faire de cette valeur ?

Si vous souhaitez obtenir la valeur numérique afin de pouvoir convertir la chaîne Java en chaîne ASCII, l'option réel La question est "comment encoder une chaîne Java en ASCII". Pour cela, utilisez l'objet StandardCharsets.US_ASCII .

13voto

user1721904 Points 843

Si vous vouliez convertir la chaîne entière en valeurs ASCII concaténées, vous pouvez utiliser ce code -

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

où vous obtiendrez 979899 comme sortie.

Crédit à este .

Je l'ai juste copié ici pour que ce soit pratique pour les autres.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X