我不确定为什么我不断收到此错误,但我希望有人可以帮助我。我正在尝试使用 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 s = Short.parseShort(this.binary.substring(15, 31),16);
您为输入指定基数 16(十六进制),但实际上它应该是 2
,因为输入是二进制的。
应该是
short s = Short.parseShort(this.binary.substring(15, 31),2);
^
关于java - 将值(value)存储为空头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42358938/