CRC-CCITT CRC-16】的更多相关文章

using System; static class Program { static void Main() { string input = "8000"; var bytes = HexToBytes(input); string hex = Crc16.ComputeChecksum(bytes).ToString("x2"); Console.WriteLine(hex); //c061 } static byte[] HexToBytes(string…
转自 http://blog.csdn.net/u012993936/article/details/45337069 一.CRC简介 先在此说明下什么是CRC:循环冗余码校验 英文名称为Cyclical Redundancy Check,简称CRC,它是利用除法及余数的原理来作错误侦测(Error Detecting)的.实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较, 若两个CRC值不同,则说明数据通讯出现错误 那么其实…
一.循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC. 它是利用除法及余数的原理来作错误侦测(Error Detecting)的.实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说明数据通讯出现错误. 根据应用环境与习惯的不同,CRC又可分为以下几种标准: ①CRC-12码: ②CRC-16码: ③CRC-CCITT码: ④CRC-32码. CRC-12码通常用来传…
目录 写给嵌入式程序员的循环冗余校验CRC算法入门引导 前言 从奇偶校验说起 累加和校验 初识 CRC 算法 CRC算法的编程实现 前言 CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式.在嵌入式软件开发中,经常要用到CRC 算法对各种数据进行校验.因此,掌握基本的CRC算法应是嵌入式程序员的基本技能.可是,我认识的嵌入式程序员中能真正掌握CRC算法的人却很少,平常在项目中见到的CRC的代码多数都是那种效率非常低下的实现方式. 其实,在网上有一篇介绍CRC 算法的非常好的文章,作者是Ro…
这两天做项目,需要用到 CRC 校验.以前没搞过这东东,以为挺简单的.结果看看别人提供的汇编源程序,居然看不懂.花了两天时间研究了一下 CRC 校验,希望我写的这点东西能够帮助和我有同样困惑的朋友节省点时间.    先是在网上下了一堆乱七八遭的资料下来,感觉都是一个模样,全都是从 CRC 的数学原理开始,一长串的表达式看的我头晕.第一次接触还真难以理解.这些东西不想在这里讲,随便找一下都是一大把.我想根据源代码来分析会比较好懂一些.     费了老大功夫,才搞清楚 CRC 根据”权”(即多项表达…
原文地址:循环冗余校验(CRC)算法入门引导 参考地址:https://en.wikipedia.org/wiki/Computation_of_cyclic_redundancy_checks#References  给出了CRC 计算的详细信息.想要深入学习,可以从这个网址开始.尤其是最后给出的 Reference 各个是精品 http://www.zorc.breitbandkatze.de/crc.html 是个非常有用的网站,文中给出的代码都与那里的结果进行了对比 写给嵌入式程序员的循…
//CRC16校验在通讯中应用广泛,这里不对其理论进行讨论,只对常见的3种//实现方法进行测试.方法1选用了一种常见的查表方法,类似的还有512字//节.256字等查找表的,至于查找表的生成,这里也略过.// ---------------- POPULAR POLYNOMIALS ----------------//  CCITT:      x^16 + x^12 + x^5 + x^0                 (0x1021)//  CRC-16:     x^16 + x^15…
Acquired from: ftp.adelaide.edu.au:/pub/rocksoft/crc_v3.txt or ftp://ftp.rocksoft.com/papers/crc_v3.txt or http://www.repairfaq.org/filipg/LINK/F_crc_v3.html A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS =========================================…
经测试CRC16-CCITT是可以了,其它暂时没有测试哦. 00 0E 00 01 00 01 20 17 12 26 20 19 16 01 00 00 01 01 00 00 00 00 00 00 00 00 00 => 9D D8 uint8_t crc4_itu(uint8_t *data, uint_len length); uint8_t crc5_epc(uint8_t *data, uint_len length); uint8_t crc5_itu(uint8_t *data…
from:http://yoyo.play175.com/p/200.html 节选至百度百科: 首先,任何一个由二进制数位串组成的代码,都可以惟一地与一个只含有0和1两个系数的多项式建立一一对应的关系.例如,代码1010111对应的多项式为X^6+X^4+X^2+X+1(这里的X^n表示x的n次方).同样.多项式X^5+X^3+X^2+X+1对应的代码为101111.CRC码在发送端编码和接收端校验时,都可以利用事先约定的生成多项式G(X)来得到.目前广泛使用的生成多项式主要有以下四种:CRC…
写给嵌入式程序员的循环冗余校验(CRC)算法入门引导 http://blog.csdn.net/liyuanbhu/article/details/7882789 前言 CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式.在嵌入式软件开发中,经常要用到CRC 算法对各种数据进行校验.因此,掌握基本的CRC算法应是嵌入式程序员的基本技能.可是,我认识的嵌入式程序员中能真正掌握CRC算法的人却很少,平常在项目中见到的CRC的代码多数都是那种效率非常低下的实现方式. 其实,在网上有一篇介绍CRC…
http://blog.csdn.net/liyuanbhu/article/details/7882789 前言 CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式.在嵌入式软件开发中,经常要用到CRC 算法对各种数据进行校验.因此,掌握基本的CRC算法应是嵌入式程序员的基本技能.可是,我认识的嵌入式程序员中能真正掌握CRC算法的人却很少,平常在项目中见到的CRC的代码多数都是那种效率非常低下的实现方式. 其实,在网上有一篇介绍CRC 算法的非常好的文章,作者是Ross Williams…
文章转自 循环冗余校验(CRC)算法入门引导 - Ivan 的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/liyuanbhu/article/details/7882789   一.原理部分 CRC 算法的基本思想是将传输的数据当做一个位数很长的数,将这个数除以另一个数,得到的余数作为校验数据附加到原数据后面.除法采用正常的多项式乘除法,而加减法都采用模2运算.模2运算就是结果除以2后取余数,如3 mod 2 = 1,在计算机中就是异或运算: 例如: 要传…
CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性.         /// CRC算法参数模型解释:         /// NAME:参数模型名称.         ///WIDTH:宽度,即CRC比特数.         /// P…
一.CRC码的FPGA实现之一CRC的原理 实验目的 学习用FPGA设计一个数据通信中常用的数据检错模块——循环冗余检验CRC模块,熟悉理解CRC的检错原理. 实验原理 循环冗余检验(CRC)算法原理 (一)基本原理 循环冗余检验(Cyclic Redundancy Check),是一种纠错能力很强,使用非常广泛的数据传输差错检错方法,是在串行通信中广泛采用的检验编码.CRC校验码的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的监督码(既CRC码)…
CRC(Cyclic Redundancy Check)循环冗余校验是常用的数据校验方法,讲CRC算法的文章很多,之所以还要写这篇,是想换一个方法介绍CRC算法,希望能让大家更容易理解CRC算法. 先说说什么是数据校验.数据在传输过程(比如通过网线在两台计算机间传文件)中,由于传输信道的原因,可能会有误码现象(比如说发送数字5但接收方收到的却是6),如何发现误码呢?方法是发送额外的数据让接收方校验是否正确,这就是数据校验.最容易想到的校验方法是和校验,就是将传送的数据(按字节方式)加起来计算出数…
/// <summary> /// 报文解析转换类 /// </summary> public class DatagramConvert { public static Encoding ENCODING_ASCII = Encoding.ASCII; public static Encoding ENCODING_GB2312 = Encoding.GetEncoding("gb2312"); public static Crc16Ccitt CRC16 =…
循环冗余校验码 CRC码利用生成多项式为k个数据位产生r个校验位进行编码,其编码长度为n=k+r所以又称 (n,k)码. CRC码广泛应用于数据通信领域和磁介质存储系统中. CRC理论非常复杂,一般书就给个例题,讲讲方法.现在简单介绍下它的原理: 在k位信息码后接r位校验码,对于一个给定的(n,k)码.可以证明(数学高手自己琢磨证明过程)存在一个最高次幂为 n-k=r 的多项式g(x),根据g(x)可以生成k位信息的校验码,g(x)被称为 生成多项式 用C(x)=C(k-1)C(k-2)...C…
一.CRC算法原理   CRC校验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校 验用的监督码(既CRC码)r位,并附在信息后边,构成一个新的二进制码序列数共(k+r)位,最后发送出去.在接收端,则根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错. 16位的CRC码产生的规则是先将要发送的二进制序列数左移16位(既乘以 )后,再除以一个多项式,最后所得到的余数既是CRC码. 假设数据传输过程中需要发送15位的二进制信息 g=10100…
他今天就开始学习Redis源代码的一些工具来实现,在任何一种语言工具.算法实现的原理应该是相同的,一些比較经典的算法.比方说我今天看的Crc循环冗余校验算法和rand随机数产生算法. CRC算法全称循环冗余校验算法.CRC校验的基本思想是利用线性编码理论,在发送端依据要传送的k位二进制码序列,以一定的规则产生一个校验用的监督码(既CRC码)r位,并附在信息后边,构成一个新的二进制码序列数共(k+r)位,最后发送出去. 在接收端, 则依据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出…
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web; namespace WeChat.CRC{ public class CRC { #region CRC16 public static byte[] CRC16(byte[] data) { int len = data.Length; if (len > 0) { ushort crc = 0x…
一.奇偶校验码 二.海明校验码 三.CRC校验码   计算机系统运行时,各个部之间要进行数据交换.交换的过程中,会有发生误码的可能(即0变成1或1变成0),由于计算机的储存是通过二进制代码来实现的的,误码会导致储存的内容发生改变.为确保数据在传送过程正确无误,常使用检验码. 我们常使用的检验码有三种. 分别是奇偶校验码.海明校验码和循环冗余校验码(CRC) . 一.奇偶校验码 学习资料:常用校验码 概念:   奇偶校验码是奇校验码和偶校验码的统称. 它们都是通过在要校验的编码上加一位校验位组成.…
https://www.kernel.org/doc/Documentation/crc32.txt A brief CRC tutorial. A CRC is a long-division remainder. You add the CRC to the message, and the whole thing ( message+CRC ) is a multiple of the given CRC polynomial. To check the CRC, you can eith…
/* aos_crc64.c -- compute CRC-64 * Copyright (C) 2013 Mark Adler * Version 1.4 16 Dec 2013 Mark Adler */ /* This software is provided 'as-is', without any express or implied warranty. In no event will the author be held liable for any damages arising…
Modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议.通过此协议,控制器相互之间.或控制器经由网络(如以太网)可以和其它设备之间进行通信.Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备.一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave.典型的主设备包括工控机和工业控制器等:典型的从设备如PLC可编程控制器等.Modbus通讯物理接口可以选用串口(包括RS232和RS485),也可以选择以太网口. 1.十六…
%ws   WCHAR wszName CRC原理 设编码前的原始信息多项式为P(x),P(x)的最高幂次加1等于k:生成多项式为G(x),G(x)的最高幂次等于r:CRC多项式为R(x):编码后的带CRC的信息多项式为T(x).发送方编码方法:将P(x)乘以xr(即对应的二进制码序列左移r位),再除以G(x),所得余式即为R(x).用公式表示为 T(x)=xrP(x)+R(x)接收方解码方法:将T(x)除以G(x),如果余数为0,则说明传输中无错误发生,否则说明传输有误. 程序可以如下实现:…
最近在摄像头采集的数据清晰度上需要加强,则在每一帧传输的数据包后边加了CRC校验和.CRC校验和有16位的,也有32位的.至于CRC校验和算法原理,我是在百度上学习的,其实网上有很多这种资料.简单的说就是CRC校验和就是将一段二进制数据进行加密(乘以一个多项式),然后得到一个校验码.将这个校验码添加在这段二进制数据后边就行了.然后接收方在接收到数据之后,再对这个校验码进行解码. 下面我就将今天的demo代码简单的注释一下: 在发送方的buffer[22]中,前二十个数据为要发送的数据,而后两位即…
CRC wiki,历史发展,各个版本的用途 等 https://en.wikipedia.org/wiki/Cyclic_redundancy_check (apple)crc32.c /* * This code implements the AUTODIN II polynomial used by Ethernet, * and can be used to calculate multicast address hash indices. * It assumes that the lo…
LRC CRC 纵向冗余码校验   2010-01-26 11:00:15|  分类: 电气 |  标签: |字号大中小 订阅  1.LRC校验  LRC域是一个包含一个8位二进制值的字节.LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC域中的值比较,如果两值不等,说明有错误.  LRC校验比较简单,它在ASCII协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容.它仅仅是把每一个需要传输的数据按字节叠加后取反加1即可.下面是…
CRC(循环冗余校验)在线计算 http://www.ip33.com/crc.html 里面的8005的多项式值,但网上看到的算法都是用A001来异或的 ----------------------------------------------------- 0x8005=1000 0000 0000 0101B  0xA001=1010 0000 0000 0001B 对比两个二进制高低位正好是完全相反的,CRC校验分为正向校验与反向校验.正向校验高位在左,反向校验低位在左 正向校验使用左…