我尝试运行此代码,但发生错误。
System.out.println(Long.parseLong("9000000000000000", 16));
Run Code Online (Sandbox Code Playgroud)
我们知道long的最小个数是-9,223,372,036,854,775,808,0x9000000000000000是-8,070,450,532,247,928,832 为什么会出现错误?
9000000000000000 base 16 是一个正数,因为没有符号。由于 along
是有符号的,因此它可以容纳的最大数字是 0x7FFF_FFFF_FFFF_FFFF。所以你的太棒了。
如果你想要 -8,070,450,532,247,928,832,请使用parseUnsignedLong()
:
System.out.println(Long.parseUnsignedLong("9000000000000000", 16));
Run Code Online (Sandbox Code Playgroud)
输出:
-8070450532247928832
现在接受高达 0xFFFF_FFFF_FFFF_FFFF 的值。
归档时间: |
|
查看次数: |
2005 次 |
最近记录: |