我有以下代码在进行从十六进制到十进制的转换。
Long.parseLong("FF44C5EC",16)
。
我得到的输出是这个4282697196
但是正确地它应该是一个负数。我该怎么办才能获得2的补码正确的转换?
Java Long.parseLong没有以2的补码形式给出正确的值
•
问答
iCMS 回答:Java Long.parseLong没有以2的补码形式给出正确的值
parseLong
返回一个带符号的long
,但通过“带符号”表示如果您传递以-
开头的字符串,它可以处理负数,而不是知道2的补码
将字符串参数解析为由指定的基数中的有符号长整数 第二个论点。字符串中的字符必须全部为数字 指定基数的整数(由Character.digit(char, int)返回一个非负值),但第一个字符可以 为ASCII减号'-'('\ u002D')表示负值或 ASCII加号'+'('\ u002B')表示正值。的 返回结果为long值。
解决方案可能是:
Long.valueOf("FF44C5EC",16).intValue()
将按您期望的那样打印-12270100
。