翻新时间:2022-10-29
用C语言实现CRC校验计算
用C语言实现CRC校验计算 用C语言实现CRC校验计算 信息技术论文 更新:2006-4-8 阅读: 用C语言实现CRC校验计算
用C语言实现CRC校验计算
<?xml:nmespce prefix = o ns ="urn:schems-microsoft-com:office:office" />Clcul
tes CRC quickly using the tble-lookup method
作 者:董云 YUN DONG
工作单位:黄埔海关技术处工程师
通讯地址:广州市经济技术开发区志诚大道海关大楼
电话号码:020-82130556
邮政编码:510730
电子邮件: dy168@163.net
摘 要:
简述CRC算法原理,给出一种新颖快速的查表计算方法,并给出用C语言编写的算法源程序。关键词:CRC、多项式、查表法 在编写数据传输程序时,数据容错是一个非常重要的问题。循环冗余位校验(Cyclicl Redundncy Check英文简称CRC)是目前运用非常广泛的一种数据容错方法,在数据传输,数据压缩等领域运用极其广泛。CRC的实现分为硬件和软件两种方法,其中软件实现的关键在于计算速度。如果单纯模拟硬件实现方法,则计算速度较慢。笔者在编制一个数据通讯软件中,运用了一种新颖的查表法计算CRC,速度很快,效果极佳。
组合值只有256种可能,因此可利用硬件模拟算法先算好它们的CRC值预先填入一张表中,该表的每一单元对应相对值的CRC。这样就可以通过查表法来计算CRC值,以便大大提高CRC运算的速度。下面给出用C语言编制的计算程序。
首先将CRC生成多项式及CRC值表定义为一个头文件CRC.H:
#define REV_CCITT 0x8408 //反转CCITT多项式
#define CRC16 0x8005 //CRC16多项式
#define REV_CRC16 0x
001 //反转CRC16多项式
unsigned short crc_tble[256]; //CRC值表
造表和查表法CRC计算函数。
#include "crc.h"
void mk_crctble(unsigned short genpoly)
unsigned short crc_tble[256];
unsigned short
ccnum=0;
unsigned short i,j,k;
for(i=0,k=0;i<256;i++,k++)
i<<=8;
for(j=8;j>0;j--)
if((i^ccnum)&0x8000)
ccnum=(
ccnum<<=
1)^genpoly;
else
ccnum<<=1;
i<<=1;
crc_tble[k]=
ccnum;
void crc_upd
te(unsigned short d
t
,unsigned short
ccnum)
ccnum=(
ccnum<<=
8)^crc_tble[(
ccnum>>
8)^d
t
];
注:genpoly为CRC多项式,
ccnum为累加器值(即为新的CRC值),d
t
为参与CRC计算的信息。
参考文献:
【1】顾慰文,《纠错码及其在计算机系统中的应用》,人民邮电出版社,1980。
【2】J.P.Roth,W.G.Bouricius: Progrmmed
下载文档
网友最新关注
- 我心目中的英雄
- 包包子
- 《大象的裤子》续编
- 小狗“花花”
- 一堂生动的法制课
- 我的梦想
- 日月潭
- 第一次玩火
- 打预防针
- 赖床的坏习惯
- 夏天
- 奶奶家屋后的大山
- 美丽的公园
- 小闹钟
- 去动物园看猴
- 银行职员的入党申请书
- 2011年五月大学生入党申请书
- 会计专业大学生入党申请书
- 共青团入团申请书范文
- 初三入团申请书
- 小学入团申请书
- 小学入团申请书
- 2011在校大学生入党申请书
- 在学习党章后的入党申请书
- 入团申请书怎么写
- 教师预备党员2011年入党转正申请书
- 五月最新大学生入党申请书
- 入团申请书格式
- 怎样写入团申请书
- 初中入团申请书
- 浅论在路基沉降处理中灌浆法的应用
- 试论声乐表演艺术的审美原理
- 浅谈音乐课中的计算机辅助教学
- 笛子演奏中的即兴性探讨
- 现代传媒与流行音乐文化——对超女现象的音乐社会学认识
- 浅谈儿童钢琴学习良好动机的形成
- 浅析音乐教育中的“愉悦性”
- 浅析音乐教育的德育作用
- 歌唱表演中要注意的几个问题
- 佛教对孔雀舞的影响
- 对宝卷念唱的意义阐述
- 浅谈手风琴的风箱运用
- 关于全面预算管理在高速公路经营企业的应用建议
- 数学对音乐发展的促进作用
- 浅谈新手上路应注意的问题
- 《坐井观天》教学设计
- 《纸船和风筝》教学设计
- 《太空生活趣事多》教学设计
- 《科利亚的木匣》教学设计二
- 《陶罐和铁罐》练习设计
- 《我要的是葫芦》教学设计
- 《我是什么》教学设计
- 《三个儿子》
- 《浅水洼里的小鱼》教学设计
- 《酸的和甜的》教学设计
- 《浅水洼里的小鱼》第二课时
- 《农业的变化真大》教学设计
- 《小柳树和小枣树》教学设计
- 《一株紫丁香》第二课时教学设计
- 《一株紫丁香》教学设计