在 Java 中将字符串转换为十六进制

Rupam Yadav 2023年1月30日 2021年7月3日
  1. 使用 charInteger.toHexString() 数组将字符串转换为十六进制
  2. 使用 byte 数组和字符串格式化程序将字符串转换为十六进制
  3. 使用 Apache Commons Codec 将字符串转换为十六进制
在 Java 中将字符串转换为十六进制

在本文中,我们将学习如何使用下面通过示例显示的四种方法将字符串转换为十六进制值。

使用 charInteger.toHexString() 数组将字符串转换为十六进制

第一种技术使用将字符串转换为 char 数组。我们首先创建一个 StringBuilder() 对象,我们用它来附加字符以创建整个十六进制值字符串。要将字符串转换为 char 数组,我们使用 toCharArray() 命令。之后,我们使用增强循环和 Integer.toHexString() 方法,该方法接受单个 char 作为参数。

函数 Integer.toHexString()char 转换为十六进制,然后我们使用 stringBuilder.append() 方法附加字符串并将其显示到输出中。

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

输出:

Converted Hex from String: 54686973206973206120737472696e67

使用 byte 数组和字符串格式化程序将字符串转换为十六进制

在此示例中,我们首先使用 getBytes() 函数将字符串转换为字节数组 getBytesFromString。我们必须将 getBytes() 方法中的字符集作为参数传递。一旦我们获得了字节数组,我们就创建了一个 BigInteger 对象,并在构造函数中,我们传递了一个 int 值 1 和字节数组作为参数。

我们使用 String.format() 方法将 bigInteger 对象值格式化为十六进制字符串。一旦我们得到十六进制字符串,我们就打印它。

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

输出:

Converted Hex from String: 5765206861766520746f20636f6e76657274207468697320737472696e6720746f20686578

使用 Apache Commons Codec 将字符串转换为十六进制

在将字符串转换为十六进制 Java 的最后一种方法中,我们使用了 Apache Commons Codec 库。要将库包含在我们的项目中,我们将使用以下 maven 依赖项:

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

与上一个示例一样,我们将从要在此程序中转换的字符串中获取一个 byte 数组。然后我们使用 Apache Commons-Codec 库的 Hex 类并调用其静态方法 encodeHexString() 并传递 byteArray 作为其参数。然后我们得到转换为十六进制的字符串作为回报。

我们可以使用函数 encodeHex() 代替 encodeHexString(),但它会返回一个 char 数组,我们必须将其转换为字符串;然而,结果将是相同的。

import org.apache.commons.codec.binary.Hex;

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[] byteArray = str.getBytes(StandardCharsets.UTF_8);
        String convertedResult = Hex.encodeHexString(byteArray);

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

输出:

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

相关文章 - Java String

相关文章 - Java Hex