gpt4 book ai didi

java - 为什么不能在 kotlin 方法 intArrayOf 中使用十六进制 Int?

转载 作者:行者123 更新时间:2023-12-02 01:15:02 25 4
gpt4 key购买 nike

我在 Kotlin 中发现了一个奇怪的问题。

我可以将十六进制整数分配给 Int 变量,就像:

private val a = 0xFFFF0000    //works good

但我无法在 intArrayOf 中使用这个十六进制整数:

private val array: IntArray = intArrayOf(0xFFFF0000)

IDE 提示:整数文字不符合预期的 Int 类型enter image description here

有人知道为什么吗?无论如何可以在 intArrayof 中使用 0xFFFF0000 吗?

最佳答案

虽然0x7FFF_FFFF的类型为Int,但从0x8000_0000开始的十六进制文字的类型为Long。

您需要 32 位来存储 0x8000_0000。虽然 Int 有符号,但该值(即最小的一个)太大而无法存储在 Int 中。

您可以使用负十六进制文字

val a: IntArray = intArrayOf(-0x1_0000)

如果您使用的是 JVM,您可以检查

a.forEach { println(Integer.toHexString(it)) }
assert(0x7FFF_FFFF == Integer.MAX_VALUE)
assert(-0x8000_0000 == Integer.MIN_VALUE)

关于java - 为什么不能在 kotlin 方法 intArrayOf 中使用十六进制 Int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58811970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com