CRC位域单表查表及建表方法.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CRC位域单表查表及建表方法

??????????? ????CRC位域单表查表及建表方法 ? 菜农在《CRC位域多表查表方法》一文中,利用CRC的“性质”:CRC[a^b]=CRC[a]^CRC[b],?得出了多位域多表 实现压缩表格的方法。CRC多位域多表查表方法的优点就是“直观”,特别对位域宽度为4即表长16时CRC明文每位 16进制数即为表的坐标。缺点是每个位域都对应于一个CRC表,故表长的压缩不是很理想。 CRC多项式种类及位数繁多,如CRC4,CRC8,CRC10,CRC12,CRC16,CRC24,CRC32,CRC40,CRC64等等,每种多项式 对应与一个CRC矩阵,如CRC8为16*16的CRC8矩阵,CRC16为256*256的CRC16矩阵。即(2^(N/2))*(2^(N/2))的CRCN 矩阵。 为了压缩表格空间,可以将CRC[a^b]=CRC[a]^CRC[b]变为CRC[a^b]=C^CRC[A^B]的形式减少为1个统一的CRC 表,其中C和A为上次CRC查表的一部分,B为CRC明文的一部分。?选择位域宽度为4即表长为16来说明CRC位域 单表查表及建表方法,传统的查表方法实际归为位域宽度为8即表长为256的CRC位域单表查表方法。由于CRC算法 有左右移位之分,故其对应查表程序和建表方法也不同。而CRC位域多表查表的查表程序和建表方法都是相同的。 以CRC8举例,CRC8位域4双表建表方法用其行和列各16个元素分别建立2个CRC表。 对于左移CRC8,权值0x07表格为: CRCL8_Col[16]={0x00,0x07,0x0E,0x09,0x1C,0x1B,0x12,0x15,0x38,0x3F,0x36,0x31,0x24,0x23,0x2A,0x2D}; CRCL8_Row[16]={0x00,0x70,0xE0,0x90,0xC7,0xB7,0x27,0x57,0x89,0xF9,0x69,0x19,0x4E,0x3E,0xAE,0xDE}; 对于右移CRC8,权值0x8C表格为: CRCR8_Col[16]={0x00,0x5E,0xBC,0xE2,0x61,0x3F,0xDD,0x83,0xC2,0x9C,0x7E,0x20,0xA3,0xFD,0x1F,0x41}; CRCR8_Row[16]={0x00,0x9D,0x23,0xBE,0x46,0xDB,0x65,0xF8,0x8C,0x11,0xAF,0x32,0xCA,0x57,0xE9,0x74}; 而在CRC8位域4单表建表方法中,必须根据CRC的移位方式来来选择某行或某列唯一16个元素建立1个CRC表. 故CRC位域单表相对CRC位域多表占用的空间要进一步压缩数倍,任何CRC表都可只用16个表格。 对于左移CRC8,权值0x07表格为(左移位域4取列表16个): CRCL8_Col[16]={CRC[0x00],CRC[0x01],CRC[0x02],...CRC[0x0D],CRC[0x0E],CRC[0x0F]}; 即:CRCL8_Col[16]={0x00,0x07,0x0E,0x09,0x1C,0x1B,0x12,0x15,0x38,0x3F,0x36,0x31,0x24,0x23,0x2A,0x2D}; 左移CRC8查表核心程序为(字符型不分大小端存储模式): unsigned?char GetCRCL8(unsigned?char?crcinit,?unsigned?char?crcval) {//(可以不要初值crcinit,多字节CRC8时入口需要对crcval做处理) unsigned?char?i,?crc=0; crcval?=?crcinit?^?crcval; for(i?=?0;i??2;i?++)//1个字节位域4需要2次完成 { crc?=?(crc??4)?^?CRCL8_Col[((crc?^?crcval)??4)??0x0F];//位域宽4单表16个字节 crcval?=?4;//准备下一个位域,域宽4 } return?crc; } 对于右移CRC8,权值0x8C表格为(右移位域4取行表16个): CRCR8_Row[16]={CRC[0x00],CRC[0x10],CRC[0x20],...CRC[0xD0],CRC[0xE0],CRC[0xF0]}; 即:CRCR8_Row[16]={0x00,0x9D,0x23,0xBE,0x46,0xDB,0x65,0xF8,0x8C,0x11,0xAF,0x32,0xCA,0x57,0xE9,0x74}; 右移CRC8查表核心程序为(字符型不分大小端存储模式): unsigned?char GetCRCR8(unsigned?char?crcinit,?unsi

文档评论(0)

wuyuetian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档