Java Long.parseLong没有以2的补码形式给出正确的值

我有以下代码在进行从十六进制到十进制的转换。 Long.parseLong("FF44C5EC",16)。 我得到的输出是这个4282697196 但是正确地它应该是一个负数。我该怎么办才能获得2的补码正确的转换?

iCMS 回答:Java Long.parseLong没有以2的补码形式给出正确的值

parseLong返回一个带符号的long,但通过“带符号”表示如果您传递以-开头的字符串,它可以处理负数,而不是知道2的补码

将字符串参数解析为由指定的基数中的有符号长整数 第二个论点。字符串中的字符必须全部为数字 指定基数的整数(由Character.digit(char, int)返回一个非负值),但第一个字符可以 为ASCII减号'-'('\ u002D')表示负值或 ASCII加号'+'('\ u002B')表示正值。的 返回结果为long值。

解决方案可能是:

Long.valueOf("FF44C5EC",16).intValue()

将按您期望的那样打印-12270100

本文链接:https://www.f2er.com/2242689.html

大家都在问