⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crc.cpp

📁 7Zip软件实现: 七种编码格式的压缩与解压缩功能。
💻 CPP
字号:
#include "rar.hpp"uint CRCTab[256];void InitCRC(){  for (int I=0;I<256;I++)  {    uint C=I;    for (int J=0;J<8;J++)      C=(C & 1) ? (C>>1)^0xEDB88320L : (C>>1);    CRCTab[I]=C;  }}uint CRC(uint StartCRC,const void *Addr,uint Size){  if (CRCTab[1]==0)    InitCRC();  byte *Data=(byte *)Addr;#if defined(LITTLE_ENDIAN) && defined(PRESENT_INT32)  while (Size>0 && ((long)Data & 7))  {    StartCRC=CRCTab[(byte)(StartCRC^Data[0])]^(StartCRC>>8);    Size--;    Data++;  }  while (Size>=8)  {    StartCRC^=*(uint32 *)Data;    StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);    StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);    StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);    StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);    StartCRC^=*(uint32 *)(Data+4);    StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);    StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);    StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);    StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);    Data+=8;    Size-=8;  }#endif  for (int I=0;I<Size;I++)    StartCRC=CRCTab[(byte)(StartCRC^Data[I])]^(StartCRC>>8);  return(StartCRC);}#ifndef SFX_MODULEushort OldCRC(ushort StartCRC,const void *Addr,uint Size){  byte *Data=(byte *)Addr;  for (int I=0;I<Size;I++)  {    StartCRC=(StartCRC+Data[I])&0xffff;    StartCRC=((StartCRC<<1)|(StartCRC>>15))&0xffff;  }  return(StartCRC);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -