2017-02-21 7 views
0

なぜこのエラーが発生するのか不明ですが、誰かが私を助けてくれることを望んでいました。私は(16ビット)は、私は、エラーメッセージ(エラーが発生したスター)を取得Javaで部分MIPS逆アセンブラプログラムで作業しようとしているが、私の、私のフォーマットはオフセットを保存しようとするとしています:値を短く保存する

private short offset; 
       public void setOffset (String binary) { 
        **short s = Short.parseShort(this.binary.substring(15, 31),16);** 

        offset = s; 
       } 
       public short getOffset(){ 
        return offset; 
       } 

これは番目のエラーですメッセージ私が取得:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1000000000001100" 
at java.lang.NumberFormatException.forInputString(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at java.lang.Short.parseShort(Unknown Source) 
at HexI.setOffset(HexI.java:65) 
at MipsDisassembler.main(MipsDisassembler.java:31) 

は基本的に私はあなたが入力したときのために、基数16(16進数)を指定している

+0

'公共ボイドsetOffset(文字列のバイナリ)'が、 '、私はちょうどこれを試してみましたが、私はまだそれが外であることをエラーメッセージが、この時間を取得していますthis.binary' –

答えて

1
short s = Short.parseShort(this.binary.substring(15, 31),16); 

進値に戻すために短いとして保存し、ビット演算子を使用したいです入力がバイナリであるので、実際には2でなければなりません。

それは

short s = Short.parseShort(this.binary.substring(15, 31),2); 
                 ^
+0

を使用する必要があります境界。スレッド "main"の例外java.lang.NumberFormatException:値が範囲外です。値: "1000000000001100"基数:2 – Oluwatosin

関連する問題