Java Long.parseLong用2的补码形式给出的值不正确

问题描述 投票:-1回答:1

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

java data-conversion twos-complement
1个回答
0
投票

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

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

解决方案可能是:

-

如您所愿打印Long.valueOf("FF44C5EC",16).intValue()

© www.soinside.com 2019 - 2024. All rights reserved.