在 Java 中將字串轉換為十六進位制

Rupam Yadav 2023年10月12日
  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 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);
  }
}

輸出:

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