考虑到HEX中的FFFFFFB2是十进制的-78
为什么我的操作错误?
Integer.parseInt("FFFFFFB2", 16)
错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "FFFFFFFFFFFFFFB2"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:495)
at tmp.Test.main(Test.java:11)
答案 0 :(得分:1)
考虑到HEX中的FFFFFFFFFFFFFFB2是-78十进制“
不,FFFFFFFFFFFFFFB2十六进制是18446744073709552000十进制。你误将十六进制误认为2s补充。
如果你想采用2s补码位模式并将其转换为数字,this answer提示了一个技巧:
long l = new BigInteger("FFFFFFFFFFFFFFB2",16).longValue();
注意我使用的是BigInteger
和long
,而不是long
和int
,因为数字太大了。
答案 1 :(得分:0)
如果发生以下任何一种情况,则抛出NumberFormatException类型的异常:
字符串表示的值不是int类型的值。
正如已经指出的那样,您的号码不是class Person {
@validateSomethingFirst
public doSomething() {
}
private validateSomethingFirst() { ... }
}
。