>>54

#include <stdio.h>
#include <limit.h>
typedef unsigned int crc32 ; /* 32ビットの符号無し整数型 */
#define getcrc32( src, size ) chkcrc32( 0, src, size )
#define cmpcrc32( crc, src, size ) ( getcrc32( 0, src, size ) == crc )
crc32 chkcrc32 ( crc32 crc, const unsigned char *src, size_t size )
{
  size_t n, m ;
  crc ^= 0xffffffff ;
  for ( n = 0 ; n < size ; n++ )
  {
    crc ^= src[n] ;
    for ( m = 0 ; m < CHAR_BIT ; m++ )
    {
      int flag = ( crc & 1 ) ;
      crc >>= 1 ;
      if ( flag ) crc ^= 0xedb88320 ;
    }
  }
  return crc ^ 0xffffffff ;
}
int main()
{
  unsigned char buf[4] = "TEST" ;
  printf ( "%08x\n", getcrc32 ( buf, 4 ) ) ;
  return 0 ;
}