java.lang.Integer.parseInt因使用最高位的十六进制字符串而失败
我感到惊讶的是,以下从32位整数到十六进制字符串的正向-反向转换失败了: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的解决方
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)