ホームページ >Java >&#&チュートリアル >Javaでバイト配列を16進数に変換するにはどうすればよいですか?
Java でバイト配列を 16 進数に変換する
バイト配列を 16 進数表現に変換することは、ソフトウェア開発における一般的なタスクです。 Java には、この変換を実現するためのメソッドがいくつか用意されています。
1 つのアプローチには、特定のフォーマット文字列「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"
このメソッドは、各バイトが 2 文字の 16 進文字列として表され、空いた位置を埋めるために先行ゼロが付けられるようにします。
あるいは、よりコンパクトな場合は、表現では、パディングと区切り文字を省略できます:
StringBuilder sb = new StringBuilder(); for (byte b : bytes) { sb.append(String.format("%X", b)); // Shorter representation } System.out.println(sb.toString()); // Prints "FF00010203"
Integer.toHexString() を使用して 16 進数に変換する前に、符号付きバイトを 32 ビット整数に変換すると、符号拡張により不正確な結果が生じる可能性があります。この問題を回避するには、バイト値を 0xFF で明示的にマスクします。
byte b = -1; System.out.println(Integer.toHexString(b & 0xFF)); // Correct conversion: "FF"
最後に、バイト配列に生のバイトではなく ASCII 文字が含まれている場合は、新しい String(bytes, "US- ASCII") コンストラクターを使用して文字列表現を直接作成します。
以上がJavaでバイト配列を16進数に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。