Jas*_*n S 7 java parsing long-integer
我得到了这个,但我没有得到它:
package com.example.bugs;
public class ParseLongTest {
public static void main(String[] args) {
long l = -1;
String s = Long.toHexString(l);
System.out.println(s);
long l2 = Long.parseLong(s, 16);
}
}
Run Code Online (Sandbox Code Playgroud)
这失败了以下内容:
ffffffffffffffff
Exception in thread "main" java.lang.NumberFormatException: For input string: "ffffffffffffffff"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Long.parseLong(Long.java:410)
at java.lang.Long.parseLong(Long.java:468)
at com.example.bugs.ParseLongTest.main(ParseLongTest.java:8)
Run Code Online (Sandbox Code Playgroud)
大概是因为如果你从字面上解释为0xffffffffffffffffL,它就不适合签名的Long数字空间.
但是为什么Long.toHexString()会产生一个无法通过Long.parseLong()解析的字符串,我该如何解决这个问题呢?(我需要一种方法来获取十六进制字符串表示的长值,然后再返回)
Long.parseLong(String s, int radix)不明白两个人的补充.对于负数,它预期减号.正如已经提到的那样,您应该使用Long.toString(long l, int radix)使十六进制字符串与此解析方法兼容.
| 归档时间: |
|
| 查看次数: |
5659 次 |
| 最近记录: |