kolibrios-gitea/programs/games/fara/trunk/crc32.cpp
2011-01-30 10:48:08 +00:00

65 lines
1.2 KiB
C++

#include "kosSyst.h"
#include "CRC32.h"
CCRC32::CCRC32()
{
Dword i, mask, j, k;
for ( i=0xEDB8; i >= 0x8320; i-- )
{
mask = i;
for ( j=0; j<8; j++ )
{
k = mask;
mask >>= 1;
if ( k & 1 )
{
mask ^= 0xEDB88320;
}
this->table[i & 0xFF] = mask;
}
}
}
Dword CCRC32::InitCRC32()
{
return 0xFFFFFFFF;
}
Dword CCRC32::FinalizeCRC32(Dword d)
{
return ~d;
}
void CCRC32::DoCRC32(Byte *buffer, Dword length, Dword *CRC32value)
{
Dword result, i;
Byte mask;
result = *CRC32value;
for ( i=0; i<length; i++ )
{
mask = (Byte)( ( result ^ buffer[i] ) & 0xFF );
result = ( result >>= 8 ) ^ this->table[mask];
}
*CRC32value = result;
}
Dword CCRC32::GetCRC32(Byte *buffer, Dword length)
{
Dword result;
result = 0xFFFFFFFF;
this->DoCRC32( buffer, length, &result );
return ~result;
}