2017-02-21 74 views
0

我不確定爲什麼我一直收到此錯誤,但我希望有人能幫助我。我試圖在Java中的部分MIPS反彙編程序的工作,但嘗試存儲我的我幅面膠印機(16位),我得到一個錯誤信息(星發生錯誤)時:將價值存儲爲短

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) 

基本上我想將它保存爲一個短期和使用位運算符來返回一個十六進制值

+0

'公共無效setOffset(二進制字符串)'但使用'this.binary' –

回答

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

您的輸入時指定基數16(十六進制)實際上它應該是2,因爲輸入是二進制的。

應該

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

我只是嘗試這樣做,但我仍然得到錯誤信息,但這個時候,它超出了界限。線程「main」中的異常java.lang.NumberFormatException:值超出範圍。值:「1000000000001100」基數:2 – Oluwatosin