在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中文網其他相關文章!