JavaでByte型変数をInt型にキャストする際には、気を付けなければならないことがあります。 前回のエントリーで、Byte型配列を16進数文字列に変換するメソッドを作りましたが、その時にByte型をInt型へ変換するには、ただ単にキャスト変換するのではなく、「0xFF」でANDビット演算しなければ値がおかしくなるという事を書きました。 どういう事かというと… [java] byte a = (byte)0xC8 //10進数では200のはず int b = (int)a; Sytem.out.println(b); [/java] この実行結果は、「200」ではなく、「-56」が表示されます。 それを、 [java] byte a = (byte)0xC8 //10進数では200のはず int b = a & 0xff; Sytem.out.println(b); [/