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