2011-09-20 21 views
8

En Java, ¿cómo tomo una matriz de bytes [] y elimino los primeros 16 bytes de la matriz? Sé que podría tener que hacer esto al copiar la matriz en una nueva matriz. Cualquier ejemplo o ayuda sería apreciada.Eliminando los primeros 16 bytes de una matriz de bytes

+0

acaba de tomar de 'bytearray [2]' 'a bytearray [byteArray.length-1]' Te ha –

+3

¿notas la inconsistencia entre tu título y la pregunta? ¿Es 16 bits o 16 bytes? –

Respuesta

33

Ya hay un método para esto en la biblioteca de Java:

Arrays.copyOfRange(byte[] original, int from, int to) 
+0

http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html#copyOfRange%28byte[],%20int,%20int%29 – Nayuki

2
byte[] a; 

... 

if(a.length > 1) { 
    byte[] newA = new byte[a.length-2]; 
    for(int i = 2; i < a.length; ++i) 
     newA[i-2]=a[i]; 
} 
0
void remove(byte[] b) 
{ 
    for(i=16;i<b.length;i++) 
    { 
     a[i-16]=b[i]; 
     Process... arrays 
    } 
} 
+0

Debe explicar su respuesta. SO existe para educar, no solo para responder a las preguntas – Machavity

+0

@Machavity. Pensé que no habría una mejor explicación si mantienes un registro del valor 'i'. 'a' es una nueva matriz del conjunto existente 'b'. cuando desee eliminar los primeros 16 elementos, comience a escribir los elementos de una nueva matriz desde esa posición (i = 16) y un [i-16] es el primer byte de la nueva matriz, por lo tanto, copie hasta el último valor de la antigua matriz de bytes. –

Cuestiones relacionadas