java crc32 作用_CRC32用途及写法

CRC32

今天在看rocketmq源码时,看到CRC32,就记录下来以供学习。主要用途:

在远距离数据通信中,为确保高效而无差错地传送数据,必须对数据进行校验即差错控制。循环冗余校验CRC(Cyclic Redundancy Check/Code)是对一个传送数据块进行校验,是一种高效的差错控制方法。

if (!checksum(ctx, request, requestHeader)) {

response.setCode(ResponseCode.SYSTEM_ERROR);

response.setRemark("crc32 not match");

return response;

}

private boolean checksum(ChannelHandlerContext ctx, RemotingCommand request,

RegisterBrokerRequestHeader requestHeader) {

if (requestHeader.getBodyCrc32() != 0) {

final int crc32 = UtilAll.crc32(request.getBody());

if (crc32 != requestHeader.getBodyCrc32()) {

log.warn(String.format("receive registerBroker request,crc32 not match,from %s",

RemotingHelper.parseChannelRemoteAddr(ctx.channel())));

return false;

}

}

return true;

}

public static int crc32(byte[] array) {

if (array != null) {

return crc32(array, 0, array.length);

}

return 0;

}

public static int crc32(byte[] array, int offset, int length) {

CRC32 crc32 = new CRC32();

crc32.update(array, offset, length);

return (int) (crc32.getValue() & 0x7FFFFFFF);

}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部