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

如何以最少额外对象开销从ByteArray指定区间创建kotlin.String?

Kotlin中高效基于ByteArray片段创建String(最少额外对象)

Java中使用new String(byte[], int, int)构造String时,会额外复制一份指定范围的字节到新数组中,带来不必要的对象开销。在Kotlin里,要以最少额外对象的方式完成相同操作,直接复用Java的String构造方法即可——Kotlin可以无缝调用Java标准库API,这是当前最优的无多余中间对象的实现方式:

val bytes: ByteArray = ...
val pos: Int = ...
val length: Int = ...
val result = String(bytes, pos, length)

补充说明

  • 如果需要指定字符集,可调用带Charset参数的重载:
    val result = String(bytes, pos, length, Charsets.UTF_8)
    
  • 避免使用bytes.sliceArray(pos until pos + length).let { String(it) }这类写法,因为sliceArray会先创建新的ByteArray副本,反而增加额外对象开销,不符合“最少额外对象”的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:30:53