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

Java Long.parseLong does not give correct value in terms of 2's complement

我有以下代码,用于从十六进制到十进制的转换。 Long.parseLong("FF44C5EC",16)。 我得到的输出是 4282697196 但按理说应该是负数。我还应该怎么做才能正确转换为 2 的补码?

parseLong returns 有符号的 long,但是 "signed" 意味着它可以处理负数,如果你传递一个以 - 开头的字符串,并不是说它知道 2 的补码。

Parses the string argument as a signed long in the radix specified by the second argument. The characters in the string must all be digits of the specified radix (as determined by whether Character.digit(char, int) returns a nonnegative value), except that the first character may be an ASCII minus sign '-' ('\u002D') to indicate a negative value or an ASCII plus sign '+' ('\u002B') to indicate a positive value. The resulting long value is returned.

解决方案可能是:

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

如您所料打印 -12270100