Каков канонический способ преобразования массива <Byte> в ByteArray

Если у вас есть массив и вы хотите преобразовать его в ByteArray, как мне это сделать? Например, следующие:

var srcArray = Array<Byte>(10, { 0 }) var tgtArray: ByteArray = srcArray as ByteArray 

Я действительно понимаю, что специализированные классы, такие как ByteArray:

… не связанные с классом Array и скомпилированы до примитивных массивов Java для максимальной производительности.

Итак, тот факт, что мой подход не подходит, не должен удивлять меня, но каков канонический способ сделать преобразование? Просто итерация через srcArray и заполнение tgtArray по одному индексу за раз – или есть более элегантное решение, которое мне не хватает?

Я не вижу никаких встроенных функций, кроме очевидного подхода, основанного на петле. Но вы можете сами определить такую ​​функцию расширения:

 fun Array<Byte>.toPrimitive(): ByteArray { val tgtArray: ByteArray = ByteArray(this.size()) for (i in this.indices) { tgtArray[i] = this[i] } return tgtArray } fun test() { val srcArray = Array<Byte>(10, { 0 }) val tgtArray: ByteArray = srcArray.toPrimitive() } 

Kotlin имеет это в stdlib как функцию расширения Array<Byte>.toByteArray()

 val srcArray = Array<Byte>(10, { 0 }) val tgtArray = srcArray.toByteArray() 

( Примечание: я изменил ваш var на val который чаще всего используется в Kotlin для использования значений только для чтения )

Вы увидите похожие для других примитивных типов данных, которые имеют реализации массивов. Вы можете увидеть их все в документации Kotlin для функций расширения Array .

Intereting Posts
Работа с вкладками в Котлине (Android Studio) Что представляет собой сжатый способ глубокого копирования 2D MutableList? Облицовочные вопросы с кинжалом котлин 2 Android – Trigger MainActivity, чтобы сделать что-то из пользовательского вида Как назначить новое значение, если вы устанавливаете setter private в kotlin? Android: реорганизовать множество групп переключателей в одном действии Приложение onCreate не вызывается для производства Каково использование emptyArray () в Котлине Как получить доступ к аргументу конструктора, который не является переменной-членом в функции init? Настройка проекта kotlin с градиентом В языке программирования Kotlin значение varargs с точки зрения использования Android: выполнение Kotlin завершилось неудачно, пытаясь использовать Databinding Неразрешенная ссылка: Kotlin нуждается в 2 сборках после очистки, чтобы получить код при использовании kapt разница между забавой в компаньонном блоке объекта и вне класса в котлине? Получение параметров формы на сервер Ktor