私はいつも例外があります
Exception in thread "main" java.util.FormatFlagsConversionMismatchException: Conversion = h, Flags = 0
このコード行
String.format("%02H", data[i]);
データ配列はchar変数を保持します。
これらの文字を9だけでなく、09のような16進形式で印刷したいと思います。
String.format("%02X", (int)data[i]);
代わりに使う必要があると思います。
このトピックに関する詳細な説明については、 Javaコードの回答を見てください。バイトを16進数に変換するには。