HexFormat
HexFormatで16進数文字列とバイト配列を相互変換する。
コード比較
✕ Java 8
// Pad to 2 digits, uppercase
String hex = String.format(
"%02X", byteValue);
// Parse hex string
int val = Integer.parseInt(
"FF", 16);
✓ Java 17+
var hex = HexFormat.of()
.withUpperCase();
String s = hex.toHexDigits(
byteValue);
byte[] bytes =
hex.parseHex("48656C6C6F");
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
双方向変換
1つのAPIでバイト→16進数・16進数→バイトの変換が可能。
設定可能
区切り文字、プレフィックス、サフィックス、大文字・小文字を設定できます。
配列サポート
バイト配列全体を一度にエンコード・デコードできます。
旧来のアプローチ
手動の16進数変換
モダンなアプローチ
HexFormat
JDKバージョン
17
難易度
中級
JDKサポート
HexFormat
利用可能
JDK 17 LTS(2021年9月)以降、広く利用可能
仕組み
HexFormatはバイト・int・配列の16進エンコード・デコードを双方向に提供します。区切り文字、プレフィックス、サフィックス、大文字・小文字の設定が可能で、手動のフォーマットや解析は不要です。
関連ドキュメント