Foro de elhacker.net

Programación => Java => Mensaje iniciado por: 4dr14n31t0r en 20 Noviembre 2015, 00:09 am



Título: Casting de arrays
Publicado por: 4dr14n31t0r en 20 Noviembre 2015, 00:09 am
Código
  1. byte b = (byte)7 //no problem
  2. byte[] array = (byte[]) new int[7] //error de compilacion
Creo que el problema habla por si solo, pero por si no ha quedado claro la pregunta es:
¿Como puedo hacer un casting de arrays?

Edito: He puesto como ejemplo tipos primitivos pero busco una forma que tambien funcione con clases


Título: Re: Casting de arrays
Publicado por: 0xFer en 20 Noviembre 2015, 02:57 am
No sé si se pueda hacer el cast de manera directa así como pretende hacer tu código, lo que si puedes hacer es convertir cada uno de los elementos del arreglo, por ejemplo:

Código
  1.  
  2. int[] ArregloInt =new byte[] {123, 12, 87};
  3. byte[] ArregloByte = new int[ArregloInt.length];
  4.  
  5. // converción de cada elemento
  6. for (int i = 0; i <ArregloByte.length; ArregloByte[i] = ArregloInt[i++] );
  7.  

Ten cuidado cuando conviertas int a byte porque un byte ocupa 8 bits mientras que un int puede ocupar más, si valor del int que quieras convertir no puede ser contenida en 8 bits entonces el int convertido a byte tendrá un valor digamos que "extraño" porque se puede tomar los bits más significativos o menos significativos dependiendo de la arquitectura de tu computadora.

en el ejemplo que te mostré no hay problema porque los valores 123,12 y 87 pueden ser almacenados en 8 bits, es decir, en 1 byte.