バイナリデータを読み込むとき、データはbyte型の変数に入るのだが、Javaのbyteは符号付き。符号なしのbyteっていうのも用意されていないので、0x00って形式で表すのはちょっとした工夫がいる。
byte型は-128から127までを表すので、byte型に格納された0xFFは-1となって、int型で格納した値と比較しようとしたときにちょっとはまる。ってかはまりました。
int a = (int)b_val; if (a < 0) { a += 256; } String s = Integer.toHexString(a);
これでできる。