ファイルの署名を比較するツールを作成しました。これは、ファイルの最初の非常に多くのバイトを読み取り、これを 16 進文字列に変換してから、この結果を配列と比較し、最後に一致するファイル タイプを JText 領域に出力します。 、私の問題は、doc ファイルを入力すると、たとえば、最初の 8 桁の 16 進数は「50 4B 03 04」ですが、これを JText 領域に出力すると 504B34 になります。バイナリは0000です....そして4(50 4B 03 '04')で、00000100だと思うので、コードがゼロの場合、最初の4バイトを出力していないと思います。すべてを含める方法を知っている人はいますかゼロの?
わかりました、私は自分の問題を知っています。説明するために投稿できます。これは、バイトを16進数に変換する文字列ビルダーを作成するコードのスニペットであることがわかります。問題は、文字列をフォーマットしようとしたことですbuilder with with sb.append("%02x.. などですが、文字列ビルダーを headerData 行に入れたときに、これまでに何もしていないと思います:
}
StringBuilder sb = new StringBuilder();
for(byte b:a){
sb.append(String.format("%02x", b));
}
if (i != -1) {
HeaderData unknownHead = new HeaderData(" ", (sb.toString()));