将价值储存为短期

时间:2017-02-21 04:49:54

标签: java runtime-error mips offset short

我不知道为什么我会一直收到这个错误,但我希望有人可以帮助我。我正在尝试使用Java中的部分MIPS反汇编程序,但在尝试存储我的I格式偏移量(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)

基本上我想将它存储为short并使用按位运算符来返回十六进制值

1 个答案:

答案 0 :(得分:1)

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

您为输入指定了基数16(十六进制),实际上它应该是2,因为输入是二进制的。

应该是

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