CRCWord文档格式.docx
- 文档编号:21312620
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:8
- 大小:393.22KB
CRCWord文档格式.docx
《CRCWord文档格式.docx》由会员分享,可在线阅读,更多相关《CRCWord文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
我们采用将数据流分成若干个8bit的字符,并由低字节到高字节传送的并行方法来求出crc校验码。
具体过程:
用一个16bit的寄存器存放CRC校验值,且设定其初始值为0x0000,将数据流的第一个8bit与16bit的CRC寄存器的高字节进行异或运算,并将结果存入CRC的高字节;
CRC寄存器左移一位,最低位补0;
同时检测移出最高位;
若移出的最高位为0;
则继续按上述方法左移,若最高位为1,则将CRC寄存器中的值与生成多项式码想异或,结果存入到CRC寄存器;
继续左移并重复上述处理方法,直到8bit数据处理完为止,则此时CRC寄存器中的值就是第一个8bit数据对应的CRC校验码;
然后将此CRC寄存器的值作为初值,用同样的方法重复上述步骤来处理下一个8bit数据流,直到所有8bit字符都处理完毕,此时CRC寄存器的值即为整个数据流对应的CRC校验码。
生成多项式对应的16进制为0x18005;
由于CRC寄存器左移过程中,移出的最高一位为1时与之相异或,所以与16bit的CRC寄存器对应的生成多项式可用0x8005表示。
下面给出处理8bit数据流得C源程序:
Unsignedshortcrc_dsp(unsignedshortreg,unsignedchardata_crc)
//reg:
为crc寄存器;
data_crc要处理的数据流
{
Unsignedshortmsb;
//crc寄存器将移出的最高位1bit
Unsignedshortdata;
Unsignedshortgx=0x8005,i=0;
//i为左移次数gx为生成多项式
Data=(unsignedshort)data_crc;
Data=data<
<
8;
Reg=reg^data;
do
msb=reg&
0x8000;
reg=reg<
1;
if(msb==0x8000)
{
reg=reg^gx;
}
i++;
}while(i<
8);
Return(reg);
}
【查表发求crc:
unsignedinttable_crc(unsignedchar*ptr,unsignedcharlen)
unsignedcharda;
unsignedintcrc=0;
while(len--)
da=(unsignedchar)(crc/256);
//crc的高8位
crc<
=8;
crc^=crc_ta[da^*ptr];
//高字节和当前数据xor再查表
ptr++;
returncrc;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CRC