Files
coco df489d5640 a
2026-07-03 16:05:30 +08:00

54 lines
1.1 KiB
C++

// Crc16.cpp: implementation of the Crc16 class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Crc16.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
// Crc16::Crc16()
// {
//
// }
//
// Crc16::~Crc16()
// {
//
// }
unsigned short Crc16::table[ 256 ];
int Crc16::initialized = 0;
Crc16::Crc16( unsigned short init_value )
{
if ( !initialized ) {
int i;
int j;
int k;
int crc;
for ( i = 0 ; i < 256 ; i++ ) {
k = i << 8;
crc = 0;
for ( j = 0 ; j < 8 ; j++ ) {
if ( ( crc ^ k ) & 0x8000 )
crc = ( crc << 1 ) ^ 0x1021;
else
crc <<= 1;
k <<= 1;
}
table[ i ] = (unsigned short) crc;
}
initialized = 1;
}
crc = init_value;
}