ホームページ >Java >&#&チュートリアル >Javaでバイト配列を16進数に変換するにはどうすればよいですか?

Javaでバイト配列を16進数に変換するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-28 18:23:13585ブラウズ

How to Convert a Byte Array to Hexadecimal in Java?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。