首頁 >Java >java教程 >如何在 Java 中將位元組數組轉換為十六進位?

如何在 Java 中將位元組數組轉換為十六進位?

Patricia Arquette
Patricia Arquette原創
2024-11-28 18:23:13497瀏覽

How to Convert a Byte Array to Hexadecimal in Java?

在Java 中將位元組數組轉換為十六進位

將位元組數組轉換為其十六進位表示法是軟體開發中的常見任務。 Java 提供了多種方法來實作這種轉換。

一種方法涉及利用具有特定格式字串「X」的 String.format() 方法。以下是一個範例:

byte[] bytes = {-1, 0, 1, 2, 3 };
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
    sb.append(String.format("%02X ", b)); // Pad with zero and separate with space
}
System.out.println(sb.toString()); // Prints "FF 00 01 02 03"

此方法確保每個位元組都表示為兩個字元的十六進位字串,並用前導零填充任何空缺位置。

或者,為了更緊湊表示,可以省略填充和分隔符:

StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
    sb.append(String.format("%X", b)); // Shorter representation
}
System.out.println(sb.toString()); // Prints "FF00010203"

值得注意的是,轉換a在使用Integer.toHexString() 轉換為十六進位之前,將有符號位元組轉換為32 位元整數可能會因符號擴展而導致結果不正確。為了避免這個問題,您可以使用0xFF 明確屏蔽位元組值:

byte b = -1;
System.out.println(Integer.toHexString(b & 0xFF)); // Correct conversion: "FF"

最後,如果您的位元組數組包含ASCII 字元而不是原始字節,則可以使用new String(bytes, "US- ASCII") 建構子直接建立字串表示形式。

以上是如何在 Java 中將位元組數組轉換為十六進位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn