¿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 .

  • no puede generar carpetas de vista java.lang.IndexOutOfBoundsException
  • Conversión de proyecto de Android con data binding de Java a Kotlin
  • La fusión del manifiesto falló: al usar el module kotlin
  • Sintaxis abreviada para generar el método toString () en Kotlin (para classs que no son de datos)
  • ¿Dónde / Cómo se agrega documentation para los packages de Kotlin?
  • Controlar el ciclo de vida de las cookies en el servlet de Ktor 0.9.0
  • Room - SELECT query, get o default
  • ¿Cómo compartir la configuration repetitiva de Kotlin en múltiples proyectos de Gradle?
  • El operador "si" de Elvis en Kotlin como argumento pnetworkingeterminado de la function
  • ¿Cómo acceder a "Activity.this" en Kotlin?
  • Error de compilation de Kotlin: no se puede invocar ninguna de las siguientes funciones con los arguments suministrados