Converti stringa in esadecimale in Java

Rupam Yadav 12 ottobre 2023
  1. Converti stringa in esadecimale utilizzando l’array di char e Integer.toHexString()
  2. Converti stringa in esadecimale utilizzando l’array di byte e il formattatore di stringhe
  3. Converti stringa in esadecimale utilizzando Apache Commons Codec
Converti stringa in esadecimale in Java

In questo articolo impareremo come convertire una stringa in un valore esadecimale utilizzando quattro modi mostrati di seguito con esempi.

Converti stringa in esadecimale utilizzando l’array di char e Integer.toHexString()

La prima tecnica utilizza la conversione della stringa in un array di char. Per prima cosa creiamo un oggetto di StringBuilder() che usiamo per aggiungere i caratteri per creare l’intera stringa di valori esadecimali. Per convertire la stringa in un array char, usiamo il comando toCharArray(). Successivamente, utilizziamo un bucle avanzato e il metodo Integer.toHexString(), che accetta un singolo char come argomento.

La funzione, Integer.toHexString(), converte il char in esadecimale, quindi usiamo il metodo stringBuilder.append() per aggiungere le stringhe e mostrarlo nell’output.

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

Produzione:

Converted Hex from String: 54686973206973206120737472696e67

Converti stringa in esadecimale utilizzando l’array di byte e il formattatore di stringhe

In questo esempio, convertiamo prima la stringa in un array di byte getBytesFromString utilizzando la funzione getBytes(). Dobbiamo passare il set di caratteri all’interno del metodo getBytes() come argomento. Una volta ottenuto l’array di byte, creiamo un oggetto di BigInteger e nel costruttore passiamo un valore int 1 e l’array di byte come argomenti.

Usiamo il metodo String.format() per formattare i valori dell’oggetto bigInteger in una stringa esadecimale. Una volta ottenuta la stringa esadecimale, la stampiamo.

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

Produzione:

Converted Hex from String: 5765206861766520746f20636f6e76657274207468697320737472696e6720746f20686578

Converti stringa in esadecimale utilizzando Apache Commons Codec

Nell’ultimo metodo per convertire una stringa in Java esadecimale, utilizziamo la libreria Apache Commons Codec. Per includere la libreria nel nostro progetto, utilizzeremo la seguente dipendenza Maven:

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

Come nell’ultimo esempio, otterremo un array di byte dalla stringa che vogliamo convertire in questo programma. Quindi usiamo la classe Hex della libreria Apache Commons-Codec e chiamiamo il suo metodo statico encodeHexString() e passiamo il byteArray come argomento. Quindi otteniamo in cambio la stringa che viene convertita in esadecimale.

Possiamo usare la funzione encodeHex() invece di encodeHexString(), ma restituirà un array char che dobbiamo convertire in una stringa; tuttavia, il risultato sarà lo stesso.

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

Produzione

Converted Hex from
    String : 5765206861766520746f20636f6e76657274207468697320737472696e6720746f20686578
Autore: 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

Articolo correlato - Java String

Articolo correlato - Java Hex