Convertir une chaîne en hexadécimal en Java

Rupam Yadav 12 octobre 2023
  1. Convertir une chaîne en hexadécimal en utilisant un tableau de char et Integer.toHexString()
  2. Convertir une chaîne en hexadécimal à l’aide d’un tableau d’byte et d’un formateur de chaîne
  3. Convertir une chaîne en hexadécimal à l’aide du codec Apache Commons
Convertir une chaîne en hexadécimal en Java

Dans cet article, nous allons apprendre à convertir une chaîne en une valeur hexadécimale à l’aide des quatre méthodes illustrées ci-dessous avec des exemples.

Convertir une chaîne en hexadécimal en utilisant un tableau de char et Integer.toHexString()

La première technique utilise la conversion de la chaîne en un tableau de char. Nous créons d’abord un objet de StringBuilder() que nous utilisons pour ajouter les caractères afin de créer toute la chaîne de valeurs hexadécimales. Pour convertir la chaîne en un tableau char, nous utilisons la commande toCharArray(). Après cela, nous utilisons une boucle améliorée et la méthode Integer.toHexString(), qui accepte un seul char comme argument.

La fonction, Integer.toHexString(), convertit le char en hexadécimal, puis nous utilisons la méthode stringBuilder.append() pour ajouter les chaînes et l’afficher à la sortie.

public class StringToHex {
  public static void main(String[] args) {
    String stringToConvert = "This is a string";

    convertStringToHex(stringToConvert);
  }

  private static void convertStringToHex(String str) {
    StringBuilder stringBuilder = new StringBuilder();

    char[] charArray = str.toCharArray();

    for (char c : charArray) {
      String charToHex = Integer.toHexString(c);
      stringBuilder.append(charToHex);
    }

    System.out.println("Converted Hex from String: " + stringBuilder.toString());
  }
}

Production:

Converted Hex from String: 54686973206973206120737472696e67

Convertir une chaîne en hexadécimal à l’aide d’un tableau d’byte et d’un formateur de chaîne

Dans cet exemple, nous convertissons d’abord la chaîne en un tableau d’octets getBytesFromString à l’aide de la fonction getBytes(). Nous devons passer le charset à l’intérieur de la méthode getBytes() en tant qu’argument. Une fois que nous obtenons le tableau d’octets, nous créons un objet de BigInteger, et dans le constructeur, nous passons une valeur int 1 et le tableau d’octets en arguments.

Nous utilisons la méthode String.format() pour formater les valeurs de l’objet bigInteger dans une chaîne hexadécimale. Une fois que nous obtenons la chaîne hexadécimale, nous l’imprimons.

import java.math.BigInteger;
import java.nio.charset.StandardCharsets;

public class StringToHex {
  public static void main(String[] args) {
    String stringToConvert = "We have to convert this string to hex";

    convertStringToHex(stringToConvert);
  }

  private static void convertStringToHex(String str) {
    byte[] getBytesFromString = str.getBytes(StandardCharsets.UTF_8);
    BigInteger bigInteger = new BigInteger(1, getBytesFromString);

    String convertedResult = String.format("%x", bigInteger);

    System.out.println("Converted Hex from String: " + convertedResult);
  }
}

Production:

Converted Hex from String: 5765206861766520746f20636f6e76657274207468697320737472696e6720746f20686578

Convertir une chaîne en hexadécimal à l’aide du codec Apache Commons

Dans la dernière méthode de conversion d’une chaîne en hexadécimal Java, nous utilisons la bibliothèque Apache Commons Codec. Pour inclure la bibliothèque dans notre projet, nous utiliserons la dépendance maven suivante :

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.15</version>
</dependency>

Comme dans le dernier exemple, nous obtiendrons un tableau de byte à partir de la chaîne que nous voulons convertir dans ce programme. Ensuite, nous utilisons la classe Hex de la bibliothèque Apache Commons-Codec et appelons sa méthode statique encodeHexString() et passons le byteArray comme argument. On obtient alors la chaîne en retour qui est convertie en hexadécimal.

Nous pouvons utiliser la fonction encodeHex() au lieu de encodeHexString(), mais elle renverra un tableau char que nous devons convertir en chaîne ; cependant, le résultat sera le même.

import java.nio.charset.StandardCharsets;
import org.apache.commons.codec.binary.Hex;

public class StringToHex {
  public static void main(String[] args) {
    String stringToConvert = "We have to convert this string to hex";

    convertStringToHex(stringToConvert);
  }

  private static void convertStringToHex(String str) {
    byte[] byteArray = str.getBytes(StandardCharsets.UTF_8);
    String convertedResult = Hex.encodeHexString(byteArray);

    System.out.println("Converted Hex from String: " + convertedResult);
  }
}

Production

Converted Hex from
    String : 5765206861766520746f20636f6e76657274207468697320737472696e6720746f20686578
Auteur: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Article connexe - Java String

Article connexe - Java Hex