| 发表于:2007-03-08 11:18:325楼 得分:0 |
下面这个类什么意思呀 望指点!! class kcrc { unsigned short crctab[256]; typedef enum { // citt xmodem arc poly = 0xa001, // the poly: 0x1021 0x1021 a001 initcrc = 0x0000, // init value: -1 0 0 byteswap = true // bit order: false true true }; public: kcrc(); ~kcrc(); unsigned short update(unsigned short crc, unsigned char * buffer, int len); }; unsigned short kcrc::update(unsigned short crc, unsigned char * buffer, int len ) { while ( len-- > 0 ) { if ( byteswap ) crc = (crc < < 8) ^ crctab[(crc> > 8) ^ * buffer++]; else crc = (crc > > 8) ^ crctab[(crc & 0xff) ^ * buffer++]; } return crc; } kcrc::kcrc() { for (int b = 0; b <= 0xff; b++ ) { unsigned short v; int i; if (byteswap) { v = b < < 8; for (i=0; i <8; i++) v = (v & 0x8000) ? (v < <1) ^ poly : v < < 1; } else { v = b; for(i=0; i <8; i++) v = v & 1 ? (v> > 1) ^ poly : v > > 1; } crctab[b] = v; } } kcrc::~kcrc() { } | | |
|