Converti array di byte in stringa esadecimale in Java

Asad Riaz 12 ottobre 2023
  1. Metodo HEX_ARRAY[] per convertire un array di byte in una stringa esadecimale in Java
  2. Metodo Hex.encodeHexString() per convertire un array di byte in una stringa esadecimale in Java
  3. Metodo DatatypeConverter() per convertire array di byte in stringa esadecimale in Java
  4. append(.format) Metodo per la conversione di un array di byte in una stringa esadecimale in Java
Converti array di byte in stringa esadecimale in Java

In questo tutorial impareremo come convertire un array di byte in una stringa esadecimale in Java.

Metodo HEX_ARRAY[] per convertire un array di byte in una stringa esadecimale in Java

Il primo metodo con cui inizieremo, per questa conversione useremo HEX_ARRAY[] composto da tutti i possibili valori esadecimali. Questo metodo è più veloce di qualsiasi altra alternativa.

Codici di esempio:

public class SimpleTesting {
  public static void main(String[] args) {
    char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray();
    byte b[] = new byte[2];
    b[0] = 20;
    b[1] = 10;
    char[] hexChars = new char[b.length * 2];
    for (int j = 0; j < b.length; j++) {
      int v = b[j] & 0xFF;
      hexChars[j * 2] = HEX_ARRAY[v >>> 4];
      hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
    }
    System.out.println(hexChars);
  }
}

Produzione:

140A

Metodo Hex.encodeHexString() per convertire un array di byte in una stringa esadecimale in Java

Il secondo metodo per convertire un array di byte in una stringa esadecimale in Java è il metodo Hex.encodeHexString(). Poiché è una libreria comune di apache, quindi il metodo apache.commons.codec.binary.Hex() deve essere importato prima all’interno del compilatore.

Codici di esempio:

import java.util.Arrays;
import org.apache.commons.codec.binary.Hex;

public class SimpleTesting {
  public static void main(String[] args) {
    byte[] byteArray = new byte[] {'S', 'i', 'm', 'p', 'l', 'e', 'T', 'e', 's', 't', 'i', 'n', 'g'};
    System.out.println("Byte Array: ");
    System.out.println(Arrays.toString(byteArray));
    System.out.println("Hex String Conversion: " + Hex.encodeHexString(byteArray));
  }
}

Produzione:

Byte Array: 
[83, 105, 109, 112, 108, 101, 84, 101, 115, 116, 105, 110, 103]
Hex String Conversion: 53696d706c6554657374696e67

Metodo DatatypeConverter() per convertire array di byte in stringa esadecimale in Java

Un altro approccio è il metodo javax.xml.bind.DatatypeConverter.printHexBinary() in Java. Questo metodo prende i byte e li converte in Hex da un array.

Codici di esempio:

import java.util.Arrays;
import javax.xml.bind.*;

public class SimpleTesting {
  public static void main(String[] args) {
    byte byteArray[] = {(byte) 00, (byte) 10, (byte) 20, (byte) 30, (byte) 40};
    String hexString = javax.xml.bind.DatatypeConverter.printHexBinary(byteArray);
    System.out.println("Byte Array: ");
    System.out.println(Arrays.toString(byteArray));
    System.out.println("Hex String Conversion: " + hexString);
  }
}

Produzione:

Byte Array: 
[0, 10, 20, 30, 40]
Hex String Conversion: 000A141E28

append(.format) Metodo per la conversione di un array di byte in una stringa esadecimale in Java

Un altro metodo che può essere utilizzato è includere append(.format) utilizzando stringBuilder in Java. Funziona convertendo ogni singolo valore da array di byte e uno per uno in stringa esadecimale di conseguenza.

Codici di esempio:

public class SimpleTesting {
  public static void main(String[] args) {
    byte a[] = new byte[2];
    a[0] = 20;
    a[1] = 10;
    StringBuilder sb = new StringBuilder(a.length * 2);
    for (byte b : a) sb.append(String.format("%02x", b));
    System.out.println(sb);
  }
}

Produzione:

140a

Articolo correlato - Java Array

Articolo correlato - Java String