私は、CまたはC++でCRC32の実装を探しています。これは、無償またはパブリックドメインとして明示的にライセンスされています。実装ここ良さそうですが、ライセンスについては「ソース コード」としか書かれていません。これは不十分です。DLL をいじらなくて済むように、LGPL 以外の方がよいと思います (私のアプリはクローズド ソースです)。zlib の adler32 実装を見ましたが、小さなデータ チャンクをチェックしているので、adler は適していません。
ベストアンサー1
のスニペット C ソースコード アーカイブがありますCRC32の実装自由に使えるもの:
/* Copyright (C) 1986 Gary S. Brown. You may use this program, or
code or tables extracted from it, as desired without restriction.*/
(残念ながら、c.snippets.orgは消滅してしまったようです。幸いにも、ウェイバックマシンアーカイブされています。
コードをコンパイルできるようにするには、ヘッダファイルとともにBYTE
、符号なし8ビット整数とDWORD
符号なし32ビット整数のtypedefを追加する必要があります。CRc.h の&スニップタイプ.h。
ヘッダー内の唯一の重要な項目はこのマクロです (CRC_32.c 自体に簡単に配置できます)。
#define UPDC32(octet, crc) (crc_32_tab[((crc) ^ (octet)) & 0xff] ^ ((crc) >> 8))