2011-09-20 24 views
8

In Java, come si acquisisce un array di byte [] e si rimuovono i primi 16 byte dall'array? So che potrei doverlo fare copiando l'array in un nuovo array. Qualsiasi esempio o aiuto sarebbe apprezzato.Rimozione dei primi 16 byte da un array di byte

+0

basta prendere da 'ByteArray [2]' a 'ByteArray [byteArray.length-1]' –

+3

Ti è piaciuto noti l'incoerenza tra il tuo titolo e la domanda? 16 bit o 16 byte? –

risposta

33

C'è già un metodo per questo nella libreria 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

Dovresti spiegare la tua risposta. SO esiste per educare, non solo per rispondere alle domande – Machavity

+0

@Machavity Ho pensato che non ci sarebbe stata una spiegazione migliore se tenessi traccia del valore di "i". 'a' è una nuova matrice fuori dall'array esistente 'b'. quando vuoi eliminare i primi 16 elementi, inizia a scrivere gli elementi del nuovo array da quella posizione (i = 16) e un [i-16] è il primo byte del nuovo array, quindi copia fino all'ultimo valore del vecchio array di byte. –