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
相关产品推荐
相关产品推荐

