You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中val bytes = 0b00000001_00000000_00000000_00000000的编译求值问题

关于Kotlin二进制字面量的类型与值问题解答

实际类型与输出值

  • 代码val bytes = 0b00000001_00000000_00000000_00000000中的下划线仅作为数字可读性分隔符,不会改变字面量的本质。这个32位二进制数的十进制值为16777216,由于其落在Kotlin Int类型的取值范围内(-2¹⁰⁷³⁷⁴¹⁸²⁴到2¹⁰⁷³⁷⁴¹⁸²³),编译器会自动推断其类型为Int,这就是你打印时得到16777216且类型为Int的原因。

ChatGPT回答错误的原因

ChatGPT混淆了二进制字面量与字节数组的声明逻辑。在Kotlin中,二进制字面量默认会被推断为对应大小的数值类型(如Int、Long),而非字节数组。若要创建对应值的Byte数组,需要显式声明:

// 直接创建Byte数组
val byteArray = byteArrayOf(0x01, 0x00, 0x00, 0x00)
// 从Int值转换为Byte数组
val intValue = 0b00000001_00000000_00000000_00000000
val convertedByteArray = intValue.toByteArray()

无法迭代的原因

Int并非可迭代类型,本身没有iterator()方法。只有数组、集合等实现了Iterable接口的类型才能被迭代,所以你尝试迭代Int类型的变量会触发报错。

内容的提问来源于stack exchange,提问作者varun sethi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:17:10