¿Cuál es la forma canónica de convertir un array <Byte> a un ByteArray

Si tienes una matriz y quieres convertirla en una matriz de bytes, ¿cómo debo hacerlo? Lo siguiente, por ejemplo, falla:

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

Sin embargo, me doy count de que las classs especializadas como ByteArray son:

… no relacionado con la class Array y se comstack en las matrices primitivas de Java para get el máximo performance.

Entonces, el hecho de que mi enfoque fracase no debería sorprenderme, pero ¿cuál es la manera canónica de hacer la conversión? Simplemente itere a través de srcArray y complete tgtArray un índice a la vez, ¿o me falta una solución más elegante?

No veo ninguna function incorporada aparte del enfoque obvio basado en loops. Pero podría definir una function de extensión como esta usted mismo:

 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 tiene esto en stdlib como una function de extensión Array<Byte>.toByteArray()

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

( Nota: cambié su var a val que es más común en Kotlin para usar valores de solo lectura )

Verá similares para otros types de datos primitivos que tienen implementaciones de matriz. Puede verlos todos en la documentation de Kotlin para las funciones de extensión Array .

  • Propiedad sin getter en Kotlin
  • Implementación onItemClickLitsner en recyclerView Kotlin -android
  • Encadenando Observables para evitar suscripciones múltiples
  • Kotlin: instancia única de una class no singleton?
  • ¿Cómo definir properties propias para models basados ​​en Jena?
  • Android Studio Lint comtesting las funciones de order superior de Kotlin
  • ¿Cuál es la solución preferida para Kotlin koan "Partition" y por qué?
  • Referencia al método de una instancia particular en Kotlin
  • Anulación de múltiples methods de interfaz en expresiones Kotlin lambda
  • En Kotlin cuando uso Kovenant Promise.of (value) a veces goteo excepciones
  • En Kotlin, ¿cómo agrego methods de extensión a otra class, pero solo visibles en un context determinado?