crc校验算法c++代码
“crc校验算法c++代码”相关的资料有哪些?“crc校验算法c++代码”相关的范文有哪些?怎么写?下面是小编为您精心整理的“crc校验算法c++代码”相关范文大全或资料大全,欢迎大家分享。
CRC校验算法
1.生成多项式。
16位的CRC码产生的规则是先将要发送的二进制序列数左移16位(既乘以
)后,再除以一个多项式,最后所得到的余数既是CRC码。任意一个由二进制位串组成的代码都可以和一个系数仅为?0?和?1?取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。 标准CRC生成多项式如下表:
名称 生成多项式 简记式* 标准引用 CRC-4 x4+x+1 3 ITU G.704 CRC-8 x8+x5+x4+1 0x31 CRC-8 x8+x2+x1+1 0x07 CRC-8 x8+x6+x4+x3+x2+x1 0x5E CRC-12 x12+x11+x3+x+1 80F
CRC-16 x
校验算法
错误检测与修正
二.错误检测的基本原理
发送器向所发送的数据信号祯添加错误检验码,并取该错误检测码作为该被传输数据信号的函数;接收器根据该函数的定义进行同样的计算,然后将两个结果进行比较:如果结果相同,则认为无错误位;否则认为该数据祯存在有错误位。 一般说来,错误检测可能出现三种结果:
在所传输的数据祯中未探测到,也不存在错误位;
所传输的数据祯中有一个或多个被探测到的错误位,但不存在未探测到的错误位; 被传输的数据祯中有一个或多个没有被探测到的错误位。
显然我们希望尽可能好地选择该检测函数,使检测结果可靠,即:所有的错误最好都能被检测出来;如检测出现无错结果,则应不再存在任何未被检测出来的错误。
实际采用的错误检测方法主要有两类:奇偶校验(ECC)、和校验(CheckSum)和CRC循环冗余校验。
二.奇偶校验ECC 单向奇偶校验
单向奇偶校验由于一次只采用单个校验位,因此又称为单个位奇偶校验。发送器在数据祯每个字符的信号位后添一个奇偶校验位,接收器对该奇偶校验位进行检查。典型的例子是面向ASCII码的数据信号祯的传输,由于ASCII码是七位码,因此用第八个位码作为奇偶校验位。
单向奇偶校验又分为奇校验(Odd Parity)和偶校验(E
CRC校验PLC算法
CRC校验函数
cBuffer:计算CRC校验码的数组。 iBufLen:该数组的长度。
unsigned int CRC_Verify(unsigned char *cBuffer, unsigned int iBufLen) {
unsigned int i, j; //#define wPolynom 0xA001 unsigned int wCrc = 0xffff;
unsigned int wPolynom = 0xA001;
/*---------------------------------------------------------------------------------*/ for (i = 0; i < iBufLen; i++) {
wCrc ^= cBuffer[i]; for (j = 0; j < 8; j++) {
if (wCrc &0x0001)
{ wCrc = (wCrc >> 1) ^ wPolynom; } else
{ wCrc = wCrc
C的CRC8校验的源代码:
简要介绍资料的主要内容,以获得更多的关注
C的CRC8校验的源代码:
// CRC8校验
// X^8 + X^2 + X^1 + 1
unsigned int code CRC8_TAB[256] = {
0x00,0x07,0x0E,0x09,0x1C,0x1B,0x12,0x15,0x38,0x3F,0x36,0x31,0x24,0x23,0x2A,0x2D, 0x70,0x77,0x7E,0x79,0x6C,0x6B,0x62,0x65,0x48,0x4F,0x46,0x41,0x54,0x53,0x5A,0x5D, 0xE0,0xE7,0xEE,0xE9,0xFC,0xFB,0xF2,0xF5,0xD8,0xDF,0xD6,0xD1,0xC4,0xC3,0xCA,0xCD, 0x90,0x97,0x9E,0x99,0x8C,0x8B,0x82,0x85,0xA8,0xAF,0xA6,0xA1,0xB4,0xB3,0xBA,0xBD, 0xC7,0xC0,0xC9,0xCE,0xDB,0xD
CRC校验C语言实现
CRC校验C语言实现
CRC校验C语言实现,转载请注明出处,谢谢
CRC(Cyclic Redundancy Check)校验应用较为广泛,以前为了处理简单,在程序中大多数采用LRC(Longitudinal Redundancy Check)校验,LRC校验很好理解,编程实现简单。用了一天时间研究了CRC的C语言实现,理解和掌握了基本原理和C语言编程。结合自己的理解简单写下来。
1、CRC简介
CRC检验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个检验码r位(就是CRC码),附在信息后面,构成一个新的二进制码序列数共(k+r)位,最后发送出去。接收端根据同样的规则校验,以确定传送中是否出错。接收端有两种处理方式:1、计算k位序列的CRC码,与接收到的CRC比较,一致则接收正确。2、计算整个k+r位的CRC码,若为0,则接收正确。
CRC码有多种检验位数,8位、16位、32位等,原理相同。16位的CRC码产生的规则是先将要发送的二进制序列数左移16位(即乘以2的16次方后),除以一个多项式,最后所得到的余数就是CRC码。
求CRC码所采用的是模2运算法则,即多项式除法中采用不带借位的减法运算,运算等同于异或运算
CRC校验C语言实现
CRC校验C语言实现
CRC校验C语言实现,转载请注明出处,谢谢
CRC(Cyclic Redundancy Check)校验应用较为广泛,以前为了处理简单,在程序中大多数采用LRC(Longitudinal Redundancy Check)校验,LRC校验很好理解,编程实现简单。用了一天时间研究了CRC的C语言实现,理解和掌握了基本原理和C语言编程。结合自己的理解简单写下来。
1、CRC简介
CRC检验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个检验码r位(就是CRC码),附在信息后面,构成一个新的二进制码序列数共(k+r)位,最后发送出去。接收端根据同样的规则校验,以确定传送中是否出错。接收端有两种处理方式:1、计算k位序列的CRC码,与接收到的CRC比较,一致则接收正确。2、计算整个k+r位的CRC码,若为0,则接收正确。
CRC码有多种检验位数,8位、16位、32位等,原理相同。16位的CRC码产生的规则是先将要发送的二进制序列数左移16位(即乘以2的16次方后),除以一个多项式,最后所得到的余数就是CRC码。
求CRC码所采用的是模2运算法则,即多项式除法中采用不带借位的减法运算,运算等同于异或运算
模糊C均值聚类算法的C++实现代码
模糊
C均值聚类算法的实现
研究背景
聚类分析是多元统计分析的一种,也是无监督模式识别的一个重要分支,在模式分类 图像处理和模糊规则处理等众多领域中获得最广泛的应用。它把一个没有类别标记的样本按照某种准则划分为若干子集,使相似的样本尽可能归于一类,而把不相似的样本划分到不同的类中。硬聚类把每个待识别的对象严格的划分某类中,具有非此即彼的性质,而模糊聚类建立了样本对类别的不确定描述,更能客观的反应客观世界,从而成为聚类分析的主流。
模糊聚类算法是一种基于函数最优方法的聚类算法,使用微积分计算技术求最优代价函数,在基于概率算法的聚类方法中将使用概率密度函数,为此要假定合适的模型,模糊聚类算法的向量可以同时属于多个聚类,从而摆脱上述问题。 模糊聚类分析算法大致可分为三类
1)分类数不定,根据不同要求对事物进行动态聚类,此类方法是基于模糊等价矩阵聚类的,称为模糊等价矩阵动态聚类分析法。
2)分类数给定,寻找出对事物的最佳分析方案,此类方法是基于目标函数聚类的,称为模糊C均值聚类。
3)在摄动有意义的情况下,根据模糊相似矩阵聚类,此类方法称为基于摄动的模糊聚类分析法
我所学习的是
MODBUS的CRC校验和程序
MODBUS的CRC校验和程序(VB编制)
modbus协议做为一种通用协议得到了广泛的应用,它有两种传输模式:ASCII和RTU。ASCII模式采用LRC校验,RTU模式采用CRC校验。
CRC方法错误检测域的内容是通过对消息内容进行循环冗长检测方法得出的。
使用RTU模式,消息包括了一基于CRC方法的错误检测域。CRC域检测了整个消息的内容。
CRC域是两个字节,包含一16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。
CRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。
CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存
C# 编写的简单易懂的串口通讯代码带CRC校验 带详细的注释
C# 编写的简单易懂的串口通讯代码带CRC校验 带详细的注释
Class_SerialPort 类代码
using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.IO.Ports;
namespace Modbus_Tcp_IP {
public class HexCode {
/// /// 从汉字转换到16进制 /// /// /// /// public static string ToHex(string s, string charset, bool fenge) { if ((s.Length % 2) != 0) { s += \空格 //throw new ArgumentException(\ }
CRC 校验码题目
CRC 校验码题目
一、CRC 属于检错码还是纠错码?如果某一数据通信系统采用 CRC校验方式,生成多项式G(x)为 X4 +X3+1 ,目的结点接收到二进制比特序列为 110111101(含CRC 校验码),判断传输过程中是否出现了错误?并解释原因。
答 属于检错码。
余数110
二、某一数据通信系统采用 CRC校验方式,生成多项式G(x)的二进制比特序列为 11001,目的结点接收到二进制比特序列为 110111101(含CRC 校验码),则下列说法正确的是 B 。
(A)收到的二进制比特序列除以生成多项式的余数为 10100,传输出现差错 (B)收到的二进制比特序列除以生成多项式的余数为 110,传输出现差错
(C)收到的二进制比特序列能被生成多项式整除,传输过程没有差错 (D)无法判断传输是否出现差错
三、利用标准CRC方法传输位流10011101,生成多项式为x3 +1,请给出实际被传输的位串。
假设在传输过程中左边第三位变反了,请证明这个错误可以在接收端被检测出来。
余数是100.
四、如果某一数据通信系统采用CRC校验方式,