Converter String em Hex em Java

Rupam Yadav 12 outubro 2023
  1. Converter String em Hex usando Array de char e Integer.toHexString()
  2. Converter string em hex usando matriz de byte e formatador de string
  3. Converter string em hex usando o codec Apache Commons
Converter String em Hex em Java

Neste artigo, aprenderemos como converter uma string em um valor hexadecimal usando quatro maneiras que são mostradas abaixo com exemplos.

Converter String em Hex usando Array de char e Integer.toHexString()

A primeira técnica usa a conversão da string em um array de char. Primeiro criamos um objeto de StringBuilder() que usamos para anexar os caracteres para criar toda a cadeia de valores hexadecimais. Para converter a string em um array char, usamos o comando toCharArray(). Depois disso, usamos um loop aprimorado e o método Integer.toHexString(), que aceita um único char como argumento.

A função Integer.toHexString() converte o char em hexadecimal, e então usamos o método stringBuilder.append() para anexar as strings e mostrá-las na saída.

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

Resultado:

Converted Hex from String: 54686973206973206120737472696e67

Converter string em hex usando matriz de byte e formatador de string

Neste exemplo, primeiro convertemos a string em um array de bytes getBytesFromString usando a função getBytes(). Temos que passar o conjunto de caracteres dentro do método getBytes() como um argumento. Depois de obter a matriz de bytes, criamos um objeto de BigInteger e, no construtor, passamos um valor int 1 e a matriz de bytes como argumentos.

Usamos o método String.format() para formatar os valores do objeto bigInteger em uma string hexadecimal. Depois de obter a string hexadecimal, nós a 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);
  }
}

Resultado:

Converted Hex from String: 5765206861766520746f20636f6e76657274207468697320737472696e6720746f20686578

Converter string em hex usando o codec Apache Commons

No último método de conversão de uma string em hexadecimal Java, usamos a biblioteca Apache Commons Codec. Para incluir a biblioteca em nosso projeto, usaremos a seguinte dependência maven:

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

Como no último exemplo, obteremos um array de byte da string que queremos converter neste programa. Em seguida, usamos a classe Hex da biblioteca Apache Commons-Codec e chamamos seu método estático de encodeHexString() e passamos o byteArray como seu argumento. Em seguida, obtemos a string de volta que é convertida em hexadecimal.

Podemos usar a função encodeHex() em vez de encodeHexString(), mas ela retornará um array char que devemos converter em string; entretanto, o resultado será o mesmo.

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

Resultado

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

Artigo relacionado - Java String

Artigo relacionado - Java Hex