Java Long.parseLong在2';补语

Java Long.parseLong在2';补语,java,data-conversion,twos-complement,Java,Data Conversion,Twos Complement,我有以下代码,我正在做从十六进制到十进制的转换。 Long.parseLong(“FF44C5EC”,16)。 我得到的输出是这个4282697196 但它应该是一个负数。我还应该做些什么来获得2的补码的正确转换?返回一个有符号的long,但“有符号”表示如果您传递一个以-开头的字符串,它可以处理负数,而不是它知道2的补码 以指定的基数将字符串参数解析为有符号长字符串 第二个论点。字符串中的字符必须全部为数字 指定基数(由Character.digit(char, int)返回一个非负值),但第

我有以下代码,我正在做从十六进制到十进制的转换。
Long.parseLong(“FF44C5EC”,16)
。 我得到的输出是这个
4282697196
但它应该是一个负数。我还应该做些什么来获得2的补码的正确转换?

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

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

解决办法可以是:

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

这会像你期望的那样打印出
-12270100

为什么你认为它应该是负数?@因为我尝试通过这个网站转换它,你会得到十进制而不是2complement@Eklavya如何得到2的补码,因为我在谷歌上看到的一些地方说使用Long.parseLong,但我已经使用了,但仍然给了我那个大整数数字?我不明白,我不是在使用parseLong ready吗?那么我应该使用.intValue()吗?它能覆盖所有的大数字并正确地执行它吗?只是想知道你写了这样一句话:“parseLong返回一个带符号的长形,但通过“signed”它意味着如果你传递一个以-,而不是它知道2的补码开头的字符串,它可以处理负数。”所以它必须手动传递“-”是吗?如果传递
-F
返回
-15
,如果传递
F
则返回
16
。你也可以在你的机器上试一下:)是的,我试过了,就像你说的那样。所以我想我会接受你的答案Long.valueOf(“FF44C5EC”,16).intValue()。能覆盖大数字吗?