`

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"));

 

分享到:
评论

相关推荐

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

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

    crc32校验原理文档

    crc校验文档,crc32的推导过程,便于理解crc。8bit并行产生CRC32位校验码。加在输入数据的最后。 例如,连续输入256bit后产生的32位校验码需要加在256bit之后。原始输入的数据按原型输出。(根据IEEE协议需要把CRC的...

    crc数据校验

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

    CRC-16 MODBUS 高位在前.xlsx

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

    CRC-16/MODBUS-JAVA

    CRC校验(循环冗余校验)小知识 CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输...

    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:...

    JavaScript实现的CRC32函数示例

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

    modes-crc:ADS-B模式-S消息的CRC实现

    模式S CRC校验器ADS-B模式-S消息的CRC实现安装$ npm install --save modes-crc文献资料检查器固色剂检查器 固色剂### fix(数据,[位]) 尝试通过遍历消息并将每个位异或并将该新消息校验和与原始CRC值进行比较来...

    基于Ymodem协议串口升级程序的实现过程

    在实现了简单的串口更新代码之后,便开始考虑到了传输的数据的完整性、正确性和安全性,因此想到了在数据传输中添加通信协议,最常用的通信传输协议有:XModem、YModem、ZModem等,此次选用的协议是YModem协议。...

    modbusCRC校验

    为了保证数据传输的可靠性,计算机网络传输数据时,必须采用差错检验措施,数据链路层广泛应用了循环冗余检验CRC(Cyclic Redundancy Check)的检错技术。

    串口网络数据调试助手V1.5

    5、可以实现各种常用校验方式(ADD8、CRC16等)以及自定义JavaScript校验 6、支持字符串和十六进制方式显示,和加时间戳分数据包显示 7、支持字符串和十进制方式发送以及文件发送,支持预定义100组数据串发送。支持...

    asp.net知识库

    如何在Asp.Net1.1中实现页面模板(所谓的MasterPage技术) Tool Tip 示例(FILTER版) Tool Tip示例 (htc版) 一个.net发送HTTP数据实体的类 按键跳转以及按Enter以不同参数提交,及其他感应事件 动态控制Page页的...

    HashLib4Pascal:散列现代对象Pascal

    建置状态可用算法散列循环冗余校验All CRC Variants from CRC3 to CRC64校验和Adler32非加密哈希函数32位哈希AP BKDR Bernstein Bernstein1 DEK DJB ELF FNV FNV1a JS Jenkins3 Murmur2 MurmurHash3_x86_

    第三代移动WEB内核小程序风口-逐浪CMS2 x3.9.3全面发布

    基于Bootsrap 4.0框架改写全部样式。 ■基于FLex弹性布局重写前端(OA平台因要支持传统业务暂不涉及)。 ...■前后端全面引入scss(sass)技术,与Bootstrap官方保持一致(作为国内首家引入Bootstrap的...CRC32: D58F68C1

Global site tag (gtag.js) - Google Analytics