clwn.net
当前位置:首页 >> 求一个C语言实现的CRC16/CCITT鶯SE校验码函数 >>

求一个C语言实现的CRC16/CCITT鶯SE校验码函数

//函数功能:计算CRC16 //参数1:*pData 16位CRC校验数据, //参数2:nLength 数据流长度 //参数3:init 初始化值 //参数4:ptable 16位CRC查找表 //逆序CRC计算 unsigned short GetRevCrc_16(unsigned char * pData, int nLength, unsigned sho...

如果是低速设计上游数据可能是串行的 显然如果采用并行实现有些浪费硬件资源 因为还要把串行输入存储起来形成整字节的并行输入 CRC的“定义”不是唯一的 只要接收发送端采用的一致就行 不知道你看了什么资料 但是估计不是很好

由于函数名CRC16与单元格名称CRC16冲突,所以将函数名改为CRC Function CRC(ByVal x As Double) As Double CRC = x ^ 16 + x ^ 12 + x ^ 5 + 1End Function

貌似CRC算法循环求余时减法是不带借位的。

你现在用的是CRC-16校验步骤,要在校验前先送0xFFFF,而CRC-CCITT是不一样的校验步骤,你还是先找CRC-CCITT的校验步骤吧!

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,...

7E 00 05 60 31 32 33 计算CRC16结果应该是:5B3E 方法如下: CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或(异或:二进制运算 相同为0,不同为1;0^0=0;0^1=1;1^0=1;1^1=0), 之后对CRC...

这个介绍的很详细, 你参考一下: http://www.cnblogs.com/Msisiterc/archive/2011/12/20/2294910.html

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConvertToCRC16 { public static class CRC16Util { // CRC高位字节表 private static readonly byte[] m_CRCHighOrderByteTable = new byte...

循环冗余校验码(CRC) CRC校验采用多项式编码方法。被处理的数据块可以看作是一个n阶的二进制多项式,由 。如一个8位二进制数10110101可以表示为: 。多项式乘除法运算过程与普通代数多项式的乘除法相同。多项式的加减法运算以2为模,加减时不...

网站首页 | 网站地图
All rights reserved Powered by www.clwn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com