2013-04-07 68 views
1

我感到惊讶的是,从32位整型以下向前向后转换为十六进制字符串失败:java.lang.Integer.parseInt失败,十六进制字符串帽子使用最高位

Integer.parseInt(-2028332484.toHexString, 16) 

给出:

java.lang.NumberFormatException: For input string: "871a1a3c" 

显然,一个解决方法是

java.lang.Long.parseLong(-2028332484.toHexString, 16).toInt 

但我不知道是否有没有更好的(也可能是更多的Sca la'ish)解决方案?

回答

0

它已被Java回答为here

不幸的是,scala AFAIK没有对这种转换进行额外的处理。

斯卡拉定义RichInt

def toHexString: String = java.lang.Integer.toHexString(self) 

StringLike

def toInt: Int   = java.lang.Integer.parseInt(toString) 
import java.lang.{Long => JLong}

除了使用JLong我不知道比你更斯卡拉十岁上下的解决方案。

+0

感谢您的链接。我发现'parseInt(_,16)'的对称对象确实是'toString(_,16)',并且没有对应'toHexString'。 – 2013-04-07 11:58:40

相关问题