2011-09-20 157 views
8

在Java中,如何获取byte []数组并从数组中移除前16个字节?我知道我可能必须通过将数组复制到一个新数组中来完成此操作。任何例子或帮助将不胜感激。删除字节数组中的前16个字节

+0

刚刚从'的ByteArray [2]''要采取的ByteArray [byteArray.length-1]' –

+3

你有没有注意你的头衔和问题之间的不一致?它是16位还是16字节? –

回答

33

有已经在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

你应该解释你的答案。 SO的存在是为了教育,而不仅仅是回答问题 – Machavity

+0

@Machavity我认为如果你跟踪'我'的价值,没有更好的解释。 'a'是现有阵列'b'中的新阵列。当你想消除前16个元素时,从这个位置(i = 16)开始写新数组的元素,并且[i-16]是新数组的第一个字节,因此复制到旧的最后一个值字节数组。 –