`

js中实现对数据的crc校验

阅读更多

对于读取一些标签数据,需要对数据的正确性进行校验,经过多次测试,终于实现了在js中对数据的校验,参考如下代码:

//把字符串转换为byte数组
function stringToBytes( str ) {  
	var ch, st, re = []; 
	for (var i = 0; i < str.length; i++ ) { 
		ch = str.charCodeAt(i);
		st = [];
	   do {  
			st.push( ch & 0xFF );
			ch = ch >> 8;
		}    
		while ( ch );  
		re = re.concat( st.reverse() ); 
	}  
	return re;  
}
//crc16校验,传入要校验的字符串,返回计算的crc16结果
function crc16(str) {
		var data = stringToBytes(str);
		var CRCStr="";
		var i, j;
		var current_crc_value = 0xFFFF;
		for (i = 0; i <data.length ; i++)
		{
			current_crc_value = current_crc_value ^ (data[i] & 0xFF);
			for (j = 0; j < 8; j++)
			{
				if ((current_crc_value & 0x01) != 0)
					current_crc_value = (current_crc_value >> 1) ^ 0x8408;
				else
					current_crc_value = (current_crc_value >> 1);
			}
		}
		var temp = (current_crc_value & 0xFF).toString(16);
		if(temp.length==1)temp="0"+temp;
		CRCStr +=temp;
		temp = ((current_crc_value >> 8) & 0xFF).toString(16);
		if(temp.length==1)temp="0"+temp;
		CRCStr +=temp;
		return CRCStr.toUpperCase();
}

 

获取设备上传的数据为:E280689100000001ED539CA9,1:D664,冒号后面的“D664“为校验码,需要校验前面的”E280689100000001ED539CA9,1“计算的结果是否为D664,如果结果相等,则表示数据正确。

调用方式:

console.log(crc16("E280689100000001ED539CA9,1"));

 

分享到:
评论

相关推荐

    CRC16校验JS算法(查表法+直接生成法)

    在crc1.js中,实现的ModbusCRC16校验可能包含了对Modbus协议规定的特殊处理,如预置初始CRC值或在计算后进行反向位操作。 在demo.html文件中,你应该能找到如何使用这些JS文件的示例。通常,这些示例会展示如何将...

    CRC16 MODBUS校验算法实现

    CRC16 MODBUS校验算法实现涉及到对数据进行特定的计算,以产生一个16位的校验码,这个校验码可以用于检查数据是否在传输过程中发生了错误。 1. CRC16原理 CRC16的核心在于一个称为生成多项式(Generator Polynomial...

    CRC16校验-Javascript代码

    #### 一、CRC校验基本概念 循环冗余校验(Cyclic Redundancy Check,CRC)是一种数据校验技术,广泛应用于通信领域,用以检测或纠正传输错误。CRC通过计算一个固定长度的校验码,并将其附加到原始数据上,接收方...

    CRC校验源码,包括CRC8和CRC16两种,采用查表法

    总结来说,CRC校验是数据通信和存储中不可或缺的错误检测机制,CRC8和CRC16是其常见的两种形式。查表法通过预计算和查表,显著提升了CRC计算的速度,使得它在实时性要求较高的场景中得到了广泛应用。通过阅读和理解...

    crc8查表法校验程序和校验检查软件

    CRC校验可以简单地描述为:例如我们要发送一些数据(信息字段),为了避免一些干扰以及在接收端的对读取的数据进行判断是否接受的是真实的数据,这时我们就要加上校验数据(即CRC校验码),来判断接收的数据是否...

    crc32校验原理文档

    在解码模块中,则根据CRC校验码验证数据的完整性。如果CRC校验成功,则输出正确的CRC值,例如题目中提到的`32'hc704dd7b`。 #### 六、CRC32的应用场景 CRC32广泛应用于各种通信协议和存储系统中,比如: - 文件...

    查表法crc16与CRC8校验.7z

    在这些设备中,CRC校验对于确保数据传输的正确性至关重要,防止因噪声、干扰或硬件故障导致的数据错误。 文件"STM32cube中文网.url"可能是STM32开发的一个中文资源网站链接,提供STM32的开发工具、库函数、文档和...

    CRC16校验JS算法

    在JavaScript中实现CRC16校验通常有两种方法:直接生成法和查表法。`crc.js`可能是使用直接生成法编写,这种方法是通过一系列数学计算来逐步生成校验码。直接生成法虽然直观,但计算量较大,效率相对较低。 而`crc1...

    crc数据校验

    计算字符串内容的crc,用于数据交互时进行内容校验,确保数据完整

    JAVA下两种方法实现CRC算法

    在JAVA中实现XMODEM协议的CRC校验,不仅需要计算CRC值,还要考虑到校验后的帧结构,包括起始、结束和填充位。 在提供的文件"JAVA实现CRC-CCITT(XMODEM)算法.txt"中,应该包含了详细的JAVA代码示例,演示了如何使用...

    CRC-16 MODBUS 高位在前.xlsx

    通过Excel 自动计算CRC16,方便数据处理和CRC校验值计算。在做串口通讯或者网络通讯的时候用到CRC,使用excel 自动计算方便快捷

    CRC原理-我学习CRC32、CRC16、CRC 原理和算法的总结(与WINRAR 结果一致).pdf

    在CRC校验中,数据被看作是一个二进制数,而有一个预定义的固定长度的二进制序列,被称为CRC多项式,相当于除数。这个多项式的位数通常为16或32,如CRC16和CRC32。计算CRC的过程就是用CRC多项式去除数据,得到一个...

    前端项目-crc-32.zip

    在JavaScript中实现CRC-32,通常会涉及到以下关键步骤: 1. **初始化**: 创建一个初始CRC值,通常是全零。 2. **处理数据**: 对每个输入字节(或一组字节),使用CRC值与该字节进行异或操作,然后将结果左移一位。...

    modbusCRC校验

    Modbus CRC校验是通信协议中一种常见的错误检测机制,主要应用于确保数据在传输过程中的完整性和准确性。在工业自动化领域,Modbus协议是广泛使用的通信标准,它依赖于CRC校验来验证发送和接收的数据帧是否一致。CRC...

    JavaScript实现的CRC32函数示例

    本文实例讲述了JavaScript实现的CRC32函数。分享给大家供大家参考,具体如下: 简介: CRC的全称是循环冗余校验。可用于验证数据的完整性。 javascript实现代码如下: (function() { var table = "00000000 ...

    javascript校验大全

    本文将深入探讨“javascript校验大全”所涵盖的验证技术,包括表单验证、数据类型验证以及特殊格式验证,如邮箱、身份证号等。 1. **表单验证**:在网页交互中,表单是最常见的用户输入接口。JavaScript可以实时...

    DLT645协议解析器及modbus CRC和DLT CS校验码计算工具

    DLT645协议解析器及modbus CRC和DLT CS校验码计算,支持两种输入格式,带空格和不带空格。默认需要安装微软VS2012发布包。 比如输入FE FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16,解析出结果如下: [11-05 08:...

    hammingCodes:在节点中实现汉明码和CRC

    在JavaScript中实现汉明码和CRC可能涉及到以下几个步骤: 1. 对原始数据进行编码: - 对于汉明码,需要先确定合适的编码规则,例如汉明码7,4,意味着有7位数据和4位校验位。然后根据规则计算校验位并将其插入到...

Global site tag (gtag.js) - Google Analytics