Convertir cadena a hexadecimal en Java

Rupam Yadav 12 octubre 2023
  1. Convierta una cadena en hexadecimal utilizando un array de char y Integer.toHexString()
  2. Convierta una cadena en hexadecimal utilizando un array de bytes y un formateador de cadena
  3. Convertir cadena a hexadecimal con el códec Apache Commons
Convertir cadena a hexadecimal en Java

En este artículo, aprenderemos cómo convertir una cadena en un valor hexadecimal usando cuatro formas que se muestran a continuación con ejemplos.

Convierta una cadena en hexadecimal utilizando un array de char y Integer.toHexString()

La primera técnica utiliza la conversión de la cadena en un array de char. Primero creamos un objeto de StringBuilder() que usamos para agregar los caracteres para crear la cadena completa de valores hexadecimales. Para convertir la cadena en un array char, usamos el comando toCharArray(). Después de eso, usamos un bucle mejorado y el método Integer.toHexString(), que acepta un solo char como argumento.

La función, Integer.toHexString(), convierte el char a hexadecimal, y luego usamos el método stringBuilder.append() para agregar las cadenas y mostrarlo en la salida.

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

Producción :

Converted Hex from String: 54686973206973206120737472696e67

Convierta una cadena en hexadecimal utilizando un array de bytes y un formateador de cadena

En este ejemplo, primero convertimos la cadena en un array de bytes getBytesFromString usando la función getBytes(). Tenemos que pasar el juego de caracteres dentro del método getBytes() como argumento. Una vez que obtenemos el array de bytes, creamos un objeto de BigInteger, y en el constructor, pasamos un valor int 1 y el array de bytes como argumentos.

Usamos el método String.format() para formatear los valores del objeto bigInteger en una cadena hexadecimal. Una vez que obtenemos la cadena hexadecimal, la imprimimos.

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

Producción :

Converted Hex from String: 5765206861766520746f20636f6e76657274207468697320737472696e6720746f20686578

Convertir cadena a hexadecimal con el códec Apache Commons

En el último método para convertir una cadena a Java hexadecimal, usamos la biblioteca Apache Commons Codec. Para incluir la biblioteca en nuestro proyecto, usaremos la siguiente dependencia de maven:

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

Como en el último ejemplo, obtendremos un array de byte de la cadena que queremos convertir en este programa. Luego usamos la clase Hex de la biblioteca Apache Commons-Codec y llamamos a su método estático encodeHexString() y pasamos el byteArray como su argumento. Luego obtenemos la cadena a cambio que se convierte en hexadecimal.

Podemos usar la función encodeHex() en lugar de encodeHexString(), pero devolverá un array char que tenemos que convertir en una cadena; sin embargo, el resultado será el mismo.

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

Producción

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

Artículo relacionado - Java String

Artículo relacionado - Java Hex