从字节数组中删除前16个字节

12
在Java中,如何从byte[]数组中删除前16个字节?我知道可能需要通过将数组复制到新数组来完成此操作。如果有示例或帮助,将不胜感激。
4个回答

49

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
    }
}

@Machavity 我认为如果您跟踪 'i' 的值,就不会有更好的解释了。'a' 是现有数组 'b' 的新数组。当您想要消除前16个元素时,从该位置(i=16)开始编写新数组的元素,并且 a[i-16] 是新数组的第一个字节,因此复制直到旧字节数组的最后一个值。 - Vishal S

0

System.arraycopy() 也可以做到这一点:

public static byte[] truncate(byte[] bytes, int srcPos, int newLength) {
    if (bytes.length < newLength) {
        return bytes;
    } else {
        byte[] truncated = new byte[newLength];
        System.arraycopy(bytes, srcPos, truncated, 0, newLength);
        return truncated;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接