Java >> Tutoriel Java >  >> Tag >> String

Convertir une chaîne en ASCII Java

Convertir une chaîne en Java ASCII | ASCII se développe en tant que code standard américain pour l'échange d'informations. Il est largement utilisé pour transférer des informations ou des messages entre les ordinateurs et contient généralement des chiffres, des lettres et d'autres symboles. ASCII est une norme de codage de caractères pour les échanges électroniques. Les valeurs ASCII sont sensibles à la casse, il a donc des valeurs différentes pour le caractère "a" et le caractère "A".

Par exemple :
Valeur ASCII pour 'A' =65
Valeur ASCII pour 'B' =66 et ainsi de suite.
Voir plus :- Programme Java pour afficher la valeur ASCII d'un caractère donné

Pour convertir la chaîne en son équivalent ASCII, nous devons obtenir la valeur ASCII de chaque caractère. Exemple :-
Chaîne ="KnowProgram" ;
ASCII ="751101111198011411110311497109"

Chaîne vers Java ASCII en utilisant String.getBytes()

En Java, la classe String contient la méthode getBytes() qui code la chaîne donnée en une séquence d'octets à l'aide du jeu de caractères nommé, stockant le résultat dans un nouveau tableau d'octets. Le programme ci-dessous illustre la méthode String.getBytes().

import java.util.Arrays;

public class Main {
   public static void main(String args[]) {
      try {
         String txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
         byte[] bytes = txt.getBytes("US-ASCII");

         System.out.println("ASCII: " + 
                         Arrays.toString(bytes));
      } catch (java.io.UnsupportedEncodingException e) {
         e.printStackTrace();
      }
   }
}

Sortie :-

ASCII :[ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88 , 89, 90 ]

En utilisant getBytes(), nous pouvons obtenir la valeur ASCII équivalente de la chaîne donnée en concaténant chaque valeur d'octet du tableau. Voyons cela à travers un exemple :-

import java.util.Arrays;

public class Main {
   public static void main(String args[]) {
      try {
         String txt = "KnowProgram";
         byte[] bytes = txt.getBytes("US-ASCII");
         System.out.println("Bytes array: " 
                  + Arrays.toString(bytes));

         StringBuilder sb = new StringBuilder("");
         for (byte value : bytes) {
            sb.append(value);
         }

         String ascii = sb.toString();
         System.out.println("ASCII: " + ascii);
      } catch (java.io.UnsupportedEncodingException e) {
         e.printStackTrace();
      }
   }
}

Sortie :-

Tableau d'octets :[75, 110, 111, 119, 80, 114, 111, 103, 114, 97, 109]
ASCII :751101111198011411110311497109

La même chose peut être faite sans utiliser la méthode getBytes(). Dans ce cas, nous devons simplement convertir char en valeur int et les concaténer. Le programme ci-dessous le montre :-

Chaîne en Java ASCII sans utiliser String.getBytes()

public class Main {
   public static void main(String args[]) {
      String txt = "KnowProgram";

      StringBuilder sb = new StringBuilder("");
      for (int i = 0; i < txt.length(); i++) {
         sb.append((int) txt.charAt(i));
      }

      String ascii = sb.toString();
      System.out.println("ASCII: " + ascii);
   }
}

Sortie :-

ASCII :751101111198011411110311497109

Chaîne binaire en Java ASCII

Dans ce code, nous convertissons d'abord le binaire en décimal, puis le définissons sur l'ASCII respectif.

public class Main {

   static int binToDec(String n) {
      String number = n;
      int dec = 0;
      int base = 1;

      int len = number.length();
      for (int i = len - 1; i >= 0; i--) {
         if (number.charAt(i) == '1')
            dec += base;
         base = base * 2;
      }

      return dec;
   }

   static String stringtoASCII(String str) {
      int N = (str.length());
      if (N % 8 != 0) {
         return "Not Possible!";
      }

      String res = "";
      for (int i = 0; i < N; i += 8) {
         int decimal_value = binToDec((str.substring(i, 8 + i)));

         res += decimal_value;
      }

      return res;
   }

   public static void main(String[] args) {
      String s = "0110000101100010";
      System.out.print(stringtoASCII(s));

   }
}

Sortie :-

9798

Java Convertir ASCII en chaîne

Auparavant, nous avons converti String en équivalent ASCII et String binaire en équivalent ASCII. Voyons maintenant son fonctionnement inverse. Nous allons convertir l'équivalent ASCII au format chaîne. Mais avant, voyons un programme simple pour convertir une valeur ASCII en chaîne :-

public class Main{
   public static void main(String[] args) {
      int val = 65;
      String string = String.valueOf((char) val);
      System.out.println(string);
   }
}

Sortie :-

A

Les valeurs ASCII des alphabets vont de 32 à 122. Par conséquent, nous obtiendrons un chiffre de l'équivalent ASCII et formerons le nombre. Si le nombre se situe entre 32 et 122, nous les convertirons en caractères. Voyons l'exemple.

Programme pour convertir ASCII en chaîne en Java

public class Main {
   public static void main(String[] args) {
      String ascii = "751101111198011411110311497109";
      String string = asciiToSentence(ascii, ascii.length());
      System.out.println("String: " + string);
   }

   public static String asciiToSentence(String ascii, int length) {
      int num = 0;
      StringBuilder sb = new StringBuilder("");
      for (int i = 0; i < length; i++) {
         num = num * 10 + (ascii.charAt(i) - '0');
         // If num is within the range
         if (num >= 32 && num <= 122) {
            sb.append((char) num);
            num = 0;
         }
      }
      return sb.toString();
   }
}

Sortie :-

Chaîne :KnowProgram


Balise Java