• ベストアンサー

VC6でCRC64・CRC128が出来るソースを探しています。

VC6でCRC64・CRC128が出来るソースを探しています。 CRC自体がよくわかっていないので、実際に動作させて理解しようとネットでソースを見つけようとしていますが、うまくコンパイルできるものが見つかりませんでした。 通常はCRCに1バイトをわたすもの?が多いのですが、できましたら文字列(長さは可変長)も扱える高速な関数を探しています。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★『CRC32』の精度では駄目なのですか? ・下に 32 ビットですが CRC32 のコードを載せておきます。今後の参考にして下さい。 サンプル: DWORD GetCRC32( LPCTSTR lpString ) {  DWORD dwCode = 0xFFFFFFFF;  int no;    while ( *lpString != '\0' ){   for ( dwCode ^= (((DWORD)*lpString) << (32 - 8)), no = 0 ; no < 8 ; no++ ){    if ( dwCode & 0x80000000 ){     dwCode = ((dwCode << 1) ^ 0x04C11DB7);    }    else{     dwCode <<= 1;    }   }   dwCode = (~dwCode & 0xFFFFFFFF);  }  return( dwCode ); } 最後に: ・http://apollo.backplane.com/matt/crc64.html→『18.2 million dataset CRC-64 test & Program source』 ・http://www.efg2.com/Lab/Mathematics/CRC.htm→『efg's Mathematics Projects -- CRC Calculator』 ・上記のリンクを参考文献としてお使い下さい。 ・以上。おわり。

tobasu
質問者

お礼

回答ありがとうございます。100から150バイトの文字列を正確に送りたいために、どうしても64ビットのCRCが必要です。 CRC32ならソースを見つけることができましたがCRC64はなかなか見つけることができませんでした。 本当にCRC64で大丈夫(実はCRC128もしくはCRC32)かはわかりませんが、探しています。 crc64(文字列)で CRC64の値が取得できる関数を探しています。 アセンブラなら高速なので、アセンブラでも構いません。 こういう関係の本も探しています。

関連するQ&A