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

  • Daga 2, no puedo inyectar presentador en mi actividad
  • Escribir un timer usando Handler en Kotlin
  • Implementando una interfaz de kotlin en java
  • RequiresApi vs TargetApi annotations de Android
  • Kotlin Pass en un tipo que implementa una interfaz parametrizada
  • La testing Running Spek muestra el error "Suite de testing vacía"
  • No se puede comstackr una function de extensión con parámetro de tipo reificado en Kotlin
  • ¿Qué significa `impl` en Kotlin?
  • Kotlin Process Collection En Paralelo?
  • Cómo forzar que algún método sea visible solo para kotlin
  • Entrada de console de lectura en Kotlin