java.lang.Integer.parseInt因使用最高位的十六进制字符串而失败

java.lang.Integer.parseInt因使用最高位的十六进制字符串而失败,java,scala,number-formatting,numberformatexception,Java,Scala,Number Formatting,Numberformatexception,我感到惊讶的是,以下从32位整数到十六进制字符串的正向-反向转换失败了: Integer.parseInt(-2028332484.toHexString, 16) 给出: java.lang.NumberFormatException: For input string: "871a1a3c" 显然,解决办法是 java.lang.Long.parseLong(-2028332484.toHexString, 16).toInt 但我想知道是否有更好的、可能更具Scala’ish的解决方

我感到惊讶的是,以下从32位整数到十六进制字符串的正向-反向转换失败了:

Integer.parseInt(-2028332484.toHexString, 16)
给出:

java.lang.NumberFormatException: For input string: "871a1a3c"
显然,解决办法是

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

但我想知道是否有更好的、可能更具Scala’ish的解决方案?

已经为Java提供了答案

不幸的是,scala AFAIK中没有对该转换进行额外处理

Scala在RichInt中定义:

以丝状的方式:


除了导入java.lang.{Long=>JLong}和使用JLong之外,我不知道还有比您的更具规模的解决方案。

感谢您的链接。我看到parseInt_16的对称对应物确实是toString_16,而toHexString没有对应物。
def toHexString: String = java.lang.Integer.toHexString(self)
def toInt: Int         = java.lang.Integer.parseInt(toString)