本文主要参考:http://www.cnblogs.com/esestt/archive/2007/08/09/848856.html ,实现查表法快速计算CRC7.
CRC7应用在SD、MMC的数据校验,生成多项式x^7 + x^3 + 1,生成的校验值为7bit.很容易想到数据以 1byte 为单位进行计算比较方便.
C语言代码实现
#include <iostream>
#include<iomanip>
#include<cstdio>
using namespace std;
const int TAB_LEN=256;
const int ALPHA=0x09;
int table_gen8(unsigned char *buf){
unsigned int alpha = ALPHA; /*x^7+x^3+1*/
int i,j;
unsigned char tmp;
for(i=0;i<TAB_LEN;i++){/*8bite总共有256中结果*/
tmp = i;
for(j=0;j<8;j++){
if(tmp & 0x80)/*判断首位是否为零*/
tmp ^= alpha;
tmp <<= 1;
}
buf[i] = tmp>>1; /*余数为7bit,计算中用了8bit,结尾多一位0要去掉*/
}
return 0;
}
unsigned char get_crc7(unsigned char start, const unsigned char *buff, int len, unsigned char *ta