Back to index

php5  5.3.10
crc32.h
Go to the documentation of this file.
00001 /*
00002    +----------------------------------------------------------------------+
00003    | PHP Version 5                                                        |
00004    +----------------------------------------------------------------------+
00005    | Copyright (c) 1997-2012 The PHP Group                                |
00006    +----------------------------------------------------------------------+
00007    | This source file is subject to version 3.01 of the PHP license,      |
00008    | that is bundled with this package in the file LICENSE, and is        |
00009    | available through the world-wide-web at the following url:           |
00010    | http://www.php.net/license/3_01.txt                                  |
00011    | If you did not receive a copy of the PHP license and are unable to   |
00012    | obtain it through the world-wide-web, please send a note to          |
00013    | license@php.net so we can mail you a copy immediately.               |
00014    +----------------------------------------------------------------------+
00015    | Author: Rasmus Lerdorf <rasmus@php.net>                              |
00016    +----------------------------------------------------------------------+
00017 */
00018 
00019 /* $Id: crc32.h 321634 2012-01-01 13:15:04Z felipe $ */
00020 
00021 /*
00022  * This code implements the AUTODIN II polynomial
00023  * The variable corresponding to the macro argument "crc" should
00024  * be an unsigned long.
00025  * Oroginal code  by Spencer Garrett <srg@quick.com>
00026  */
00027 
00028 #define CRC32(crc, ch)       (crc = (crc >> 8) ^ crc32tab[(crc ^ (ch)) & 0xff])
00029 
00030 /* generated using the AUTODIN II polynomial
00031  *     x^32 + x^26 + x^23 + x^22 + x^16 +
00032  *     x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x^1 + 1
00033  */
00034 
00035 static const unsigned int crc32tab[256] = {
00036        0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
00037        0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
00038        0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
00039        0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
00040        0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
00041        0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
00042        0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
00043        0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
00044        0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
00045        0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
00046        0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
00047        0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
00048        0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
00049        0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
00050        0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
00051        0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
00052        0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
00053        0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
00054        0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
00055        0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
00056        0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
00057        0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
00058        0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
00059        0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
00060        0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
00061        0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
00062        0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
00063        0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
00064        0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
00065        0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
00066        0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
00067        0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
00068        0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
00069        0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
00070        0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
00071        0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
00072        0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
00073        0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
00074        0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
00075        0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
00076        0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
00077        0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
00078        0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
00079        0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
00080        0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
00081        0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
00082        0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
00083        0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
00084        0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
00085        0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
00086        0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
00087        0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
00088        0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
00089        0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
00090        0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
00091        0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
00092        0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
00093        0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
00094        0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
00095        0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
00096        0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
00097        0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
00098        0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
00099        0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
00100 };
00101 
00102 /*
00103  * Local variables:
00104  * tab-width: 4
00105  * c-basic-offset: 4
00106  * End:
00107  * vim600: sw=4 ts=4 fdm=marker
00108  * vim<600: sw=4 ts=4
00109  */