我不知道为什么我会一直收到这个错误,但我希望有人可以帮助我。我正在尝试使用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并使用按位运算符来返回十六进制值
答案 0 :(得分:1)
short s = Short.parseShort(this.binary.substring(15, 31),16);
您为输入指定了基数16(十六进制),实际上它应该是2
,因为输入是二进制的。
应该是
short s = Short.parseShort(this.binary.substring(15, 31),2);
^