バイナリデータを16進で表現したい。

バイナリデータを読み込むとき、データは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);

これでできる。