1

我很惊讶以下从 32 位整数到十六进制字符串的向前向后转换失败:

Integer.parseInt(-2028332484.toHexString, 16)

给出:

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

显然一种解决方法是

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

但我想知道是否没有更好的(可能是更多的 Scala'ish)解决方案?

4

1 回答 1

0

Java 已经在这里回答了。

不幸的是,在 scala AFAIK 中没有针对这种转换的额外处理。

Scala 定义在RichInt

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

并在StringLike

def toInt: Int         = java.lang.Integer.parseInt(toString)

除了import java.lang.{Long => JLong}和使用JLong我不知道比你的更scala-ish的解决方案。

于 2013-04-07T05:48:04.753 回答