Kotlin中连接两个字节数组的简单方法是什么?

11
什么是在 Kotlin 中连接两个字节数组的最简单方法?
考虑以下内容:
val x = ByteArray(a);
val y = ByteArray(b);

请帮我将两个字节数组x,y连接,并将结果存储到另一个ByteArray中?


3
x + y 怎么样? - Anatolii
2个回答

27

对于ByteArray(和所有其他数组),有一个操作函数plus

operator fun ByteArray.plus(elements: ByteArray): ByteArray

Returns an array containing all elements of the original array and then all elements of the given elements array.

因此,您可以将此函数简单地用作运算符:

val z ByteArray = x + y

还有重载版本:

operator fun ByteArray.plus(element: Byte): ByteArray


operator fun ByteArray.plus(elements: Collection<Byte>): ByteArray

请参考此文档了解详细信息: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/plus.html 顺便说一下,这个函数有许多重载版本, 例如,您可以将(Iterable<T>Collection<T>Array<T>)与另一个(Iterable<T>Collection<T>Array<T>Sequence<T>)相加,然后获得一个List<T>
或者您可以将Set<T>和另一个(Array<out T>Iterable<T>Sequence<T>)相加,然后获得Set<T>
所有这些重载版本都是操作符函数,这意味着您可以像这样使用它:listA + arrayB a + b 运算符将调用运算符函数 a.plus(b)
请参考此文档了解详细信息: https://kotlinlang.org/docs/reference/operator-overloading.html

这不是连接操作,而是字节数组的总和。它不应该被标记为最佳答案。 - BactaTank
@Nihilus13 有什么区别? - Hiro

4
fun main(args: Array<String>) {
    val x = ByteArray(a);
    val y = ByteArray(b);

    val xLen = x.size
    val yLen = y.size
    val result = ByteArray(xLen + yLen)

    System.arraycopy(x, 0, result, 0, xLen)
    System.arraycopy(y, 0, result, xLen, yLen)

    // so now result is array that concatenate two byte arrays x,y
}

希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接