<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > CRC位域單表查表及建表方法

          CRC位域單表查表及建表方法

          作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏
          對(duì)于左移CRC16,權(quán)值XX,表格為(左移位域4取列表16個(gè)):
          CRCL16_Col[16]={CRC[0x0000],CRC[0x0001],CRC[0x0002],...CRC[0x000D],CRC[0x000E],CRC[0x000F]};
          左移CRC16查表核心程序?yàn)?大端存儲(chǔ)模式):
          unsigned int GetCRCL16(unsigned int crcinit, unsigned int crcval)
          {//(可以不要初值crcinit,多字節(jié)CRC16時(shí)入口需要對(duì)crcval做處理)
          unsigned int i, crc=0;
          crcval = crcinit ^ crcval;
          for(i = 0;i < 4;i ++)//2個(gè)字節(jié)位域4需要4次完成
          {
          crc = (crc << 4) ^ CRCL16_Col[((crc ^ crcval) >> 12) & 0x0F];//位域?qū)?單表16個(gè)字節(jié)
          crcval <<= 4;//準(zhǔn)備下一個(gè)位域,域?qū)?
          }
          return crc;
          }
          對(duì)于右移CRC16,權(quán)值XX,表格為(右移位域4取行表16個(gè)):
          CRCR16_Row[16]={CRC[0x0000],CRC[0x1000],CRC[0x2000],...CRC[0xD000],CRC[0xE000],CRC[0xF000]};
          右移CRC16查表核心程序?yàn)?小端存儲(chǔ)模式):
          unsigned int GetCRCR16(unsigned int crcinit, unsigned int crcval)
          {//(可以不要初值crcinit,多字節(jié)CRC16時(shí)入口需要對(duì)crcval做處理)
          unsigned int i, crc=0;
          crcval = crcinit ^ crcval;
          for(i = 0;i < 4;i ++)//2個(gè)字節(jié)位域4需要4次完成
          {
          crc = (crc >> 4) ^ CRCR16_Row[(crc ^ crcval) & 0x0F];//位域?qū)?單表16個(gè)字節(jié)
          crcval >>= 4;//準(zhǔn)備下一個(gè)位域,域?qū)?
          }
          return crc;
          }
          對(duì)于左移CRC32,權(quán)值XX,表格為(左移位域4取列表16個(gè)):
          CRCL32_Col[16]={CRC[0x00000000],CRC[0x00000001],...CRC[0x0000000E],CRC[0x0000000F]};
          左移CRC32查表核心程序?yàn)?大端存儲(chǔ)模式):
          unsigned long GetCRCL32(unsigned long crcinit, unsigned long crcval)
          {//(可以不要初值crcinit,多字節(jié)CRC32時(shí)入口需要對(duì)crcval做處理)
          unsigned long i, crc=0;
          crcval = crcinit ^ crcval;
          for(i = 0;i < 8;i ++)//4個(gè)字節(jié)位域4需要8次完成
          {
          crc = (crc << 4) ^ CRCL32_Col[((crc ^ crcval) >> 28) & 0x0F];//位域?qū)?單表16個(gè)字節(jié)
          crcval <<= 4;//準(zhǔn)備下一個(gè)位域,域?qū)?
          }
          return crc;
          }
          對(duì)于右移CRC32,權(quán)值XX,表格為(右移位域4取行表16個(gè)):
          CRCR32_Row[16]={CRC[0x00000000],CRC[0x10000000],...CRC[0xE0000000],CRC[0xF0000000]};
          右移CRC32查表核心程序?yàn)?小端存儲(chǔ)模式):
          unsigned int GetCRCR32(unsigned long crcinit, unsigned long crcval)
          {//(可以不要初值crcinit,多字節(jié)CRC32時(shí)入口需要對(duì)crcval做處理)
          unsigned long i, crc=0;
          crcval = crcinit ^ crcval;
          for(i = 0;i < 8;i ++)//4個(gè)字節(jié)位域4需要8次完成
          {
          crc = (crc >> 4) ^ CRCR32_Row[(crc ^ crcval) & 0x0F];//位域?qū)?單表16個(gè)字節(jié)
          crcval >>= 4;//準(zhǔn)備下一個(gè)位域,域?qū)?
          }
          return crc;
          }
          CRC位域8單表查表及建表原則(傳統(tǒng)的查表模式):
          左移位域8取列表256個(gè),大端存儲(chǔ)模式。右移位域8取行表256個(gè),小端存儲(chǔ)模式。
          對(duì)于左移CRC16,權(quán)值XX,表格為(左移位域8取列表256個(gè)):
          CRCL16_Col[256]={CRC[0x0000],CRC[0x0001],CRC[0x0002],...CRC[0x00FD],CRC[0x00FE],CRC[0x00FF]};
          左移CRC16查表核心程序?yàn)?大端存儲(chǔ)模式):
          unsigned int GetCRCL16(unsigned int crcinit, unsigned int crcval)
          {//(可以不要初值crcinit,多字節(jié)CRC16時(shí)入口需要對(duì)crcval做處理)
          unsigned int i, crc=0;
          crcval = crcinit ^ crcval;
          for(i = 0;i < 2;i ++)//2個(gè)字節(jié)位域8只需要2次完成
          {
          crc = (crc << 8) ^ CRCL16_Col[((crc ^ crcval) >> 8) & 0xFF];//位域?qū)?單表256個(gè)字節(jié)
          crcval <<= 8;//準(zhǔn)備下一個(gè)位域,域?qū)?
          }
          return crc;
          }
          對(duì)于右移CRC16,權(quán)值XX,表格為(右移位域8取行表256個(gè)):
          CRCR16_Row[256]={CRC[0x0000],CRC[0x1000],CRC[0x2000],...CRC[0xFD00],CRC[0xFE00],CRC[0xFF00]};
          右移CRC16查表核心程序?yàn)?小端存儲(chǔ)模式):
          unsigned int GetCRCR16(unsigned int crcinit, unsigned int crcval)
          {//(可以不要初值crcinit,多字節(jié)CRC16時(shí)入口需要對(duì)crcval做處理)
          unsigned int i, crc=0;
          crcval = crcinit ^ crcval;
          for(i = 0;i < 2;i ++)//2個(gè)字節(jié)位域8只需要2次完成
          {
          crc = (crc >> 8) ^ CRCR16_Row[(crc ^ crcval) & 0xFF];//位域?qū)?單表256個(gè)字節(jié)
          crcval >>= 8;//準(zhǔn)備下一個(gè)位域,域?qū)?
          }
          return crc;
          }
          對(duì)于左移CRC32,權(quán)值XX,表格為(左移位域8取列表256個(gè)):
          CRCL32_Col[256]={CRC[0x00000000],CRC[0x00000001],...CRC[0x000000FE],CRC[0x000000FF]};
          左移CRC32查表核心程序?yàn)?大端存儲(chǔ)模式):
          unsigned long GetCRCL32(unsigned long crcinit, unsigned long crcval)
          {//(可以不要初值crcinit,多字節(jié)CRC32時(shí)入口需要對(duì)crcval做處理)
          unsigned long i, crc=0;
          crcval = crcinit ^ crcval;
          for(i = 0;i < 4;i ++)//4個(gè)字節(jié)位域8只需要4次完成
          {
          crc = (crc << 8) ^ CRCL32_Col[((crc ^ crcval) >> 24) & 0x0F];//位域?qū)?單表256個(gè)字節(jié)
          crcval <<= 8;//準(zhǔn)備下一個(gè)位域,域?qū)?
          }
          return crc;
          }
          對(duì)于右移CRC32,權(quán)值XX,表格為(右移位域8取行表256個(gè)):
          CRCR32_Row[256]={CRC[0x00000000],CRC[0x10000000],...CRC[0xFE000000],CRC[0xFF000000]};
          右移CRC32查表核心程序?yàn)?小端存儲(chǔ)模式):
          unsigned long GetCRCR32(unsigned long crcinit, unsigned long crcval)
          {//(可以不要初值crcinit,多字節(jié)CRC32時(shí)入口需要對(duì)crcval做處理)
          unsigned long i, crc=0;
          crcval = crcinit ^ crcval;
          for(i = 0;i < 4;i ++)//4個(gè)字節(jié)位域8只需要4次完成
          {
          crc = (crc >> 8) ^ CRCR32_Row[(crc ^ crcval) & 0xFF];//位域?qū)?單表256個(gè)字節(jié)
          crcval >>= 8;//準(zhǔn)備下一個(gè)位域,域?qū)?
          }

          關(guān)鍵詞: CRC位域單表查表建表方

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();