【第22期】观点:IT 行业加班,到底有没有价值?

Java语言实现CRC32校验

原创 2016年06月01日 23:55:07

源代码:

<span style="font-size:14px;">package crcNew;

public class CRC32 {
	private int crc;
	private String mx;

	public CRC32(String mx) {
		crc = 0x00000000;
		this.mx = mx;
		getCrc();
	}

	private void crc(byte data) {
		int point = 0b10000000;
		while (point > 0) {
			if ((((data & point) == point) ^ ((crc & 0x80000000) == 0x80000000))) {
				crc = (crc << 1) ^ 0x04c11d87;
			} else {
				crc <<= 1;
			}
			point >>= 1;
		}
	}

	private void getCrc() {
		byte[] bytes = mx.getBytes();
		for (int i = 0; i < bytes.length; i++) {
			crc(bytes[i]);
		}
	}

	public String getCRC() {
		return Integer.toHexString(crc);
	}

}
</span>

测试代码:


package crcNew;

public class TestCRC32 {
	public static void main(String[] args) {
		CRC32 c = new CRC32("12");
		System.out.println(c.getCRC());
	}
}

结果:


注意:由于传输顺序不同结果会不同,应区别是从低位到高位校验还是从高位到低位校验


也可直接调用Java内置CRC32对象,可直接得出校验值,该方法与rar压缩软件的校验值一致:

<span style="font-size:14px;">package crcNew;

import java.util.zip.CRC32;

public class CheckCRC {
	public static void main(String[] args) {
		java.util.zip.CRC32 crc = new CRC32();
		crc.update("12".getBytes());
		System.out.println(Long.toHexString(crc.getValue()));
	}
}</span>


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

java语言实现CRC16算法

用JAVA语言实现CRC16算法,完成通讯后字节流的校验功能。 而在编写数据传输程序时,数据容错是一个非常重要的问题。循环冗余位校验(CycliclRedundncyCheck英文简称CRC)是目前运...

java语言实现CRC16算法

由于工作需要,完成上下微机的com口的通讯,所以要用JAVA语言实现CRC16算法,完成通讯后字节流的校验功能。 而在编写数据传输程序时,数据容错是一个非常重要的问题。循环冗余位校验(CycliclRedundncyCheck英文简称CRC)是目前运用非常广泛的一种数据容错方法,在数据传输,数据压缩...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

利用Java实现串口(Comm)全双工通讯 & java语言实现CRC16算法

转自 http://linduo168.iteye.com/blog/28354   本人因为项目开发的需要,需要PC机和硬件的通讯,而这个通讯通过Comm串口实现,而最好又是全双工的通讯,譬如一个流水线控制系统需要不断的接受从主控系统发送来的查询和控制信息,并将执行结果或查询结...

crc32校验的c语言实现

最近在做软件升级,需要对升级文件进行crc校验,就学习了crc的实现原理 crc就是一个数值,该数值用于检验数据的正确性,crc校验的原理就是将需要作校验的数据与一个数据模2相除,得到的余数即为...

CRC32算法学习笔记以及如何用java实现(一)

一:说明论坛上关于CRC32校验算法的详细介绍不多。前几天偶尔看到Ross N. Williams的文章,总算把CRC32算法的来龙去脉搞清楚了。本来想把原文翻译出来,但是时间参促,只好把自己的一些学习心得写出。这样大家可以更快的了解CRC32的主要思想。由于水平有限,还恳请大家指正。原文可以访问:...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)