crc16.c】的更多相关文章

最详细易懂的CRC-16校验原理(附源程序) from:http://www.openhw.org/chudonganjin/blog/12-08/230184_515e6.html 最详细易懂的CRC-16校验原理(附源程序) 1.循环校验码(CRC码): 是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定. 2.生成CRC码的基本原理: 任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应.例如:代码1010111对应的多项式…
from:http://www.openhw.org/chudonganjin/blog/12-08/230184_515e6.html 最详细易懂的CRC-16校验原理(附源程序) 1.循环校验码(CRC码): 是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定. 2.生成CRC码的基本原理: 任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应.例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x…
标准CRC生成多项式如下表: 名称                     生成多项式                           简记式*                 标准引用   CRC-4                 x4+x+1                              3                         ITU G.704   CRC-8                 x8+x5+x4+1                       0…
def crc16(x, invert): a = 0xFFFF b = 0xA001 for byte in x: a ^= ord(byte) for i in range(8): last = a % 2 a >>= 1 if last == 1: a ^= b s = hex(a).upper() return s[4:6]+s[2:4] if invert == True else s[2:4]+s[4:6] 示例: print(crc16("012345678"…
/// <summary> /// CRC校验 /// </summary> public class CRC { #region CRC16 public static byte[] CRC16(byte[] data) { int len = data.Length; if (len > 0) { ushort crc = 0xFFFF; for (int i = 0; i < len; i++) { crc = (ushort)(crc ^ (data[i]));…
var CRC = {}; CRC.CRC16 = function (data) { var len = data.length; if (len > 0) { var crc = 0xFFFF; for (var i = 0; i < len; i++) { crc = (crc ^ (data[i])); for (var j = 0; j < 8; j++) { crc = (crc & 1) != 0 ? ((crc >> 1) ^ 0xA001) : (c…
var CRC = {}; CRC._auchCRCHi = [ 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0…
/// <summary> /// 计算CRC-16 /// </summary> /// <param name="data"></param> /// <returns>高位在前</returns> public byte [] CRC_16(string data) { if ((data.Length % 2) != 0) { throw new Exception("参数\"data\…
private byte[] CRC(byte[] x, int len) //CRC校验函数 { ]; UInt16 crc = ; byte da; ; UInt16[] yu = { 0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7, 0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef }; ) { da = ()) / ); crc <<= ; crc ^= yu[…
C++中的代码如下:传入字节(byte)数组引用和数组长度 unsigned short CTcpClient::Crc16(const char *pBuf, unsigned short nLen) { BYTE i; unsigned ; while (nLen--) { ; i >>= ) { ) { crc <<= ; crc ^= 0x1021; } else { crc <<= ; } ) { crc ^= 0x1021; } } pBuf++; } re…