快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

吉祥娱乐app下载:CRC16CRC32程序代码



不久前写一法度榜样时要用到吉祥娱乐app下载 CRC-16 ,但找来找去只在 UDDF 里找到一个 Delphi 的 CRC-32 法度榜样代码,而且是用查表法,虽然说查表法速率快,但 256 项 32 位数据我狐疑可能会有输入差错, 让人不是那么宁神,而我又不知道这个表是怎么算出来的。后来我又在一本两年前的条记本里找到一段关于 CRC 的内容吉祥娱乐app下载, 也不知是从哪里抄来的,还好里面有一段法度榜样代码,是 CRC-16 的,这段法度榜样恰是孕育发生 CRC 表的,可是这区区几行的法度榜样(基础上与下面的 BuilderTable16 函数相同)看得我一头雾水,直到这两天才弄明白, 并据此推出 CRC-32 的算法,现将整个法度榜样列鄙人面,并作一些阐明以助于理解,不只要知其然,还要知吉祥娱乐app下载其以是然嘛:

// 留意:因最高位必然为“1”,故略去

cons吉祥娱乐app下载t unsigned short cnCRC_16 = 0x8005;

// CRC-16 = X16 + X15 + X2 + X0

const unsigned吉祥娱乐app下载 short cnCRC_CCITT = 0x1021;

// CRC-CCITT = X16 + X12 + X5 + X0,听说这个 16 位 CRC 多项式比上一个要好

const unsigned long cnCRC_32 = 0x04C10DB7;

// CRC-32 = X32 + X26 + X23 + X22 + X16 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X1 + X0

unsigned long Table_CRC[256]; // CRC 表

// 构造 16 位 CRC 表

void BuildTable16( unsigned short aPoly )

{

unsigned short i, j;

unsigned short nData;

unsigned short nAccum;

for ( i = 0; i > 8 ) ^ *aData++];

return nAccum;

}

// 构造 32 位 CRC 表

void BuildTable32( unsigned long aPoly )

{

unsigned long i, j;

unsigned long nData;

unsigned long nAccum;

for ( i = 0; i > 24 ) ^ *aData++];

return nAccum;

}

您可能还会对下面的文章感兴趣: