我正在寻找一种用C或C++实现的CRC32,它被明确授权为免费或公共领域。实现here看起来不错,但它对许可证的唯一说明是“源代码”,这还不够好。我更喜欢非LGPL,这样我就不用浪费在DLL上了(我的应用是封闭源代码的)。我在zlib中看到了adler32实现,但我检查的是小块数据,这是adler不适合的。
发布于 2008-11-19 18:47:22
使用Boost C++ libraries。其中包含了一个CRC,并且license很好。
发布于 2008-11-19 19:16:31
SNIPPETS C Source Code Archive有一个可自由使用的CRC32 implementation:
/* 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似乎已经死了。幸运的是,Wayback Machine已经将其存档。)
为了能够编译代码,您需要将BYTE
的typedefs添加为无符号的8位整数,将DWORD
添加为无符号的32位整数,以及头文件crc.h & sniptype.h。
标题中唯一关键的一项是这个宏(它可以很容易地放入CRC_32.c本身:
#define UPDC32(octet, crc) (crc_32_tab[((crc) ^ (octet)) & 0xff] ^ ((crc) >> 8))
发布于 2009-02-03 13:26:36
我是指定链接的源代码的作者。虽然源代码许可证的意图还不清楚(将在今天晚些时候),但代码实际上是开放的,可以在您的免费或商业应用程序中免费使用,没有附加任何条件。
https://stackoverflow.com/questions/302914
复制相似问题