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

Kotlin新手求助:如何用标准函数按单个字节拆分ByteArray

用Kotlin标准函数按指定字节拆分ByteArray

我是Kotlin开发新手,希望通过split、partition、chunked、windowed等标准函数解决ByteArray拆分问题,加深对这些函数的理解。

给定ByteArray:

byteArrayOf(123, 34, 97, 3, 116, 3, 111, 110, 34, 58, 3, 112, 105, 110)

需要按字节3拆分,预期结果:

[123, 34, 97]
[116]
[111, 110, 34, 58]
[112, 105, 110]

解决方案:使用split函数

Kotlin标准库中,Iterable接口的split扩展函数可以直接按指定元素拆分集合,完全匹配你的需求。代码示例如下:

fun main() {
    val byteArray = byteArrayOf(123, 34, 97, 3, 116, 3, 111, 110, 34, 58, 3, 112, 105, 110)
    // 按字节3拆分,自动忽略分隔符本身
    val splitResult = byteArray.split(3.toByte())
    
    // 打印验证结果
    splitResult.forEach { println(it.toList()) }
}

函数说明

  • split函数会遍历集合,将遇到的每个分隔符(这里是3.toByte())作为分界点,把原集合分割成多个子集合,最终返回这些子集合组成的列表。
  • 分隔符本身不会被包含在结果子集合中,正好符合你需要去掉字节3的要求。

其他函数的适用场景补充

  • partition:用于将集合按条件分成两个列表(满足条件的和不满足的),不适合这种多段拆分的场景。
  • chunked:按固定长度拆分集合,比如每3个元素一组,和按指定元素拆分的需求不匹配。
  • windowed:生成指定长度的滑动窗口子集合,用于连续元素的窗口分析,也不适用当前场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 21:12:38