【发布时间】:2011-09-20 03:18:31
【问题描述】:
在 Java 中,如何获取一个 byte[] 数组并从数组中删除前 16 个字节?我知道我可能必须通过将数组复制到新数组中来做到这一点。任何示例或帮助将不胜感激。
【问题讨论】:
在 Java 中,如何获取一个 byte[] 数组并从数组中删除前 16 个字节?我知道我可能必须通过将数组复制到新数组中来做到这一点。任何示例或帮助将不胜感激。
【问题讨论】:
参见Java library 中的Arrays 类:
Arrays.copyOfRange(byte[] original, int from, int to)
from 是包容性的,而to 是独占性的。两者都是从零开始的索引,所以要删除前 16 个字节
Arrays.copyOfRange(original, 16, original.length);
【讨论】:
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];
}
【讨论】:
void remove(byte[] b)
{
for(i=16;i<b.length;i++)
{
a[i-16]=b[i];
Process... arrays
}
}
【讨论】:
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;
}
}
【讨论】: