我有一个表示 2 的补码数的十六进制字符串。有没有一种简单的方法(库/函数)可以将十六进制转换为十进制而不直接使用其位?
例如。这是左边十六进制的预期输出:
"0000" => 0
"7FFF" => 32767 (max positive number)
"8000" => -32768 (max negative number)
"FFFF" => -1
Thanks!
这似乎欺骗 java 转换数字而不强制得到正结果:
Integer.valueOf("FFFF",16).shortValue(); // evaluates to -1 (short)
当然,这种事情只适用于 8、16、32 和 64 位 2 的补码:
Short.valueOf("FF",16).byteValue(); // -1 (byte)
Integer.valueOf("FFFF",16).shortValue(); // -1 (short)
Long.valueOf("FFFFFFFF",16).intValue(); // -1 (int)
new BigInteger("FFFFFFFFFFFFFFFF",16).longValue(); // -1 (long)
示例在这里 http://ideone.com/LhHco.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)