2017-01-05 4 views
0

私はバイト単位で仮想ROMファイルを読み込まなければならないChip-8エミュレータを作成しています。私はreadByteメソッドを呼び出すこのコードを持っています。これが印刷されている値を見ると、それらのうちのいくつかは通常のバイトであり、そのうちのいくつかは狂っています。 enter image description hereDataInputStream readByteが大きな値を返しています

+0

私は何か情報を残している場合私に教えて怖がってはいけません! –

+1

可読性を向上させるために、スクリーンショットではなくコードを書いてください – limonik

答えて

2

DataInputStream.readByte()signed型あるbyteを返します。戻り値は負のになります。

Integer.toHexString(intValue)符号なし整数として解釈値のヘキサ表現を返します。

したがって、負の値はtwo's complement representation(Javaでは負の値が表現される)に表示され、正の値(76,12など)が期待どおりに印刷されます。

たとえば、fffffffeの印刷値は、-2の32ビット(整数サイズ)の2の補数表現です。これはまた、適切であろう

System.out.println(String.format("%02x", tmp)); 

。なお、左パッド印刷の値をゼロで:


は、これを適切に使用し、バイト値を出力します。

+0

私は16進数でバイトを印字する方がファイル形式の作業(ヘッダバイトなど)の方が便利だと思っています...しかしAskerは、小数点以下の値。 –

+0

ありがとう! :) –

関連する問題