7 for (int I=0;I<256;I++)
11 C=(C & 1) ? (C>>1)^0xEDB88320L : (C>>1);
17 uint CRC(uint StartCRC,const void *Addr,uint Size)
21 byte *Data=(byte *)Addr;
22 #if defined(LITTLE_ENDIAN) && defined(PRESENT_INT32)
23 while (Size>0 && ((intptr_t)Data & 7))
25 StartCRC=CRCTab[(byte)(StartCRC^Data[0])]^(StartCRC>>8);
31 StartCRC^=*(uint32 *)Data;
32 StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);
33 StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);
34 StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);
35 StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);
36 StartCRC^=*(uint32 *)(Data+4);
37 StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);
38 StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);
39 StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);
40 StartCRC=CRCTab[(byte)StartCRC]^(StartCRC>>8);
45 for (unsigned int I=0;I<Size;I++)
46 StartCRC=CRCTab[(byte)(StartCRC^Data[I])]^(StartCRC>>8);
51 ushort OldCRC(ushort StartCRC,const void *Addr,uint Size)
53 byte *Data=(byte *)Addr;
54 for (unsigned int I=0;I<Size;I++)
56 StartCRC=(StartCRC+Data[I])&0xffff;
57 StartCRC=((StartCRC<<1)|(StartCRC>>15))&0xffff;