我想将 String 转换为 Int。
所讨论的字符串是
1585489022235
。
我必须首先转换为字符串,这似乎是成功的(我正在打印上面的内容)。
val id = data.get("id").toString()
println(id)
val toInt = id.toInt()
当我尝试从 String 转换为 Int 时,抛出此异常:
Error Message: java.lang.NumberFormatException: For input string: "1585489022235"
Stacktrace:
java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
java.base/java.lang.Integer.parseInt(Integer.java:658)
java.base/java.lang.Integer.parseInt(Integer.java:776)
提前非常感谢
值
"1585489022235"
无法转换为Int
,因为它大于通过Int
获取的数据类型Int.MAX_VALUE
的最大值,并且等于2147483647
。Long
:
val x = id.toLong()
long数据类型的最大值为
9223372036854775807
,可以通过Long.MAX_VALUE
获取。在 Kotlin 中,
Int
和 Long
都是数值数据类型,但它们代表不同的值范围。 Int
和 Long
之间的主要区别在于它们的大小和它们可以存储的值的范围:
Int
:32 位(4 字节)
Long
:64 位(8 字节)
Int
:范围从 -2^31 到 2^31 - 1
Long
:范围从 -2^63 到 2^63 - 1
Int
和 Long
之间的选择取决于您应用的具体要求。以下是一些注意事项:
内存使用情况:
Long
使用的内存是Int
的两倍,因为与32位相比,它是64位。如果您有大量整数并且需要考虑内存使用情况,那么使用 Int
可能会更有效。
值范围:如果您的应用程序需要表示大于
Int
范围的值(例如时间戳、唯一标识符等),则应使用Long
以避免潜在的溢出问题。
性能:
Int
上的操作可能比 Long
上更快,因为它们涉及较小的数据大小。然而,现代处理器针对这两种数据类型进行了优化,并且在许多情况下性能差异可能并不显着。
在您的特定场景中,当您处理可能超出
Int
范围的数值时,使用 toLong()
是一种合理的方法。它确保您的应用程序可以处理更大的值而不会遇到溢出问题。
请记住,选择适当的数据类型也会受到数据语义的影响。如果您正在使用的值在逻辑上表示整数并且落在
Int
的范围内,则使用 Int
是有意义的。如果您的数据需要更大的范围,那么 Long
是合适的选择。