字节数组截取的数据
System.arraycopy(src, srcPos, dest, destPos, length)
这里边都是啥?
src:源字节数组(就是你要从哪个字节数组里截数据)
srcPos:开始的位置(0可以,或者src中的某个位置长度)
dest:byte[]目标数组(用来存你截出来数据的字节数组)
destPos:目标数组开始的位置,空白数组的话可以是0
length:截取的数据长度
来个例子:
截取到校验码,自己做个校验,对不上就放弃,对的上就没有问题了。
//校验CRC
int preBytelen = preByte.length;
//获取CRC前数据
byte[] data = new byte[preBytelen- 2];//需校验数据长度
byte[] dataCRC = new byte[2];//需校验数据长度
System.arraycopy(preByte, 0, data, 0, preBytelen-2);
System.arraycopy(preByte, preBytelen-2, dataCRC, 0, 2);
//校验CRC
CRC16 crc16 = new CRC16();
int i = crc16.CRC(data);
String nowCrc = Integer.toHexString(i);
String oldCrc = ByteUtil.bytes2Hex(dataCRC, false);
//对比是否正常数据
if (!nowCrc.equals(oldCrc)) {
if (logger.isDebugEnabled()) {
logger.debug("解析包检测,CRC校验码异常");
}
throw new BufferDataException("解析包检测错误,CRC校验码异常");
}
一起进步呀。