2   inline unsigned int crc32c(
unsigned int crc, 
const char * data, 
size_t len) {
     3     static const unsigned int table[256] = {
     4       0x00000000U, 0x04C11DB7U, 0x09823B6EU, 0x0D4326D9U,
     5       0x130476DCU, 0x17C56B6BU, 0x1A864DB2U, 0x1E475005U,
     6       0x2608EDB8U, 0x22C9F00FU, 0x2F8AD6D6U, 0x2B4BCB61U,
     7       0x350C9B64U, 0x31CD86D3U, 0x3C8EA00AU, 0x384FBDBDU,
     8       0x4C11DB70U, 0x48D0C6C7U, 0x4593E01EU, 0x4152FDA9U,
     9       0x5F15ADACU, 0x5BD4B01BU, 0x569796C2U, 0x52568B75U,
    10       0x6A1936C8U, 0x6ED82B7FU, 0x639B0DA6U, 0x675A1011U,
    11       0x791D4014U, 0x7DDC5DA3U, 0x709F7B7AU, 0x745E66CDU,
    12       0x9823B6E0U, 0x9CE2AB57U, 0x91A18D8EU, 0x95609039U,
    13       0x8B27C03CU, 0x8FE6DD8BU, 0x82A5FB52U, 0x8664E6E5U,
    14       0xBE2B5B58U, 0xBAEA46EFU, 0xB7A96036U, 0xB3687D81U,
    15       0xAD2F2D84U, 0xA9EE3033U, 0xA4AD16EAU, 0xA06C0B5DU,
    16       0xD4326D90U, 0xD0F37027U, 0xDDB056FEU, 0xD9714B49U,
    17       0xC7361B4CU, 0xC3F706FBU, 0xCEB42022U, 0xCA753D95U,
    18       0xF23A8028U, 0xF6FB9D9FU, 0xFBB8BB46U, 0xFF79A6F1U,
    19       0xE13EF6F4U, 0xE5FFEB43U, 0xE8BCCD9AU, 0xEC7DD02DU,
    20       0x34867077U, 0x30476DC0U, 0x3D044B19U, 0x39C556AEU,
    21       0x278206ABU, 0x23431B1CU, 0x2E003DC5U, 0x2AC12072U,
    22       0x128E9DCFU, 0x164F8078U, 0x1B0CA6A1U, 0x1FCDBB16U,
    23       0x018AEB13U, 0x054BF6A4U, 0x0808D07DU, 0x0CC9CDCAU,
    24       0x7897AB07U, 0x7C56B6B0U, 0x71159069U, 0x75D48DDEU,
    25       0x6B93DDDBU, 0x6F52C06CU, 0x6211E6B5U, 0x66D0FB02U,
    26       0x5E9F46BFU, 0x5A5E5B08U, 0x571D7DD1U, 0x53DC6066U,
    27       0x4D9B3063U, 0x495A2DD4U, 0x44190B0DU, 0x40D816BAU,
    28       0xACA5C697U, 0xA864DB20U, 0xA527FDF9U, 0xA1E6E04EU,
    29       0xBFA1B04BU, 0xBB60ADFCU, 0xB6238B25U, 0xB2E29692U,
    30       0x8AAD2B2FU, 0x8E6C3698U, 0x832F1041U, 0x87EE0DF6U,
    31       0x99A95DF3U, 0x9D684044U, 0x902B669DU, 0x94EA7B2AU,
    32       0xE0B41DE7U, 0xE4750050U, 0xE9362689U, 0xEDF73B3EU,
    33       0xF3B06B3BU, 0xF771768CU, 0xFA325055U, 0xFEF34DE2U,
    34       0xC6BCF05FU, 0xC27DEDE8U, 0xCF3ECB31U, 0xCBFFD686U,
    35       0xD5B88683U, 0xD1799B34U, 0xDC3ABDEDU, 0xD8FBA05AU,
    36       0x690CE0EEU, 0x6DCDFD59U, 0x608EDB80U, 0x644FC637U,
    37       0x7A089632U, 0x7EC98B85U, 0x738AAD5CU, 0x774BB0EBU,
    38       0x4F040D56U, 0x4BC510E1U, 0x46863638U, 0x42472B8FU,
    39       0x5C007B8AU, 0x58C1663DU, 0x558240E4U, 0x51435D53U,
    40       0x251D3B9EU, 0x21DC2629U, 0x2C9F00F0U, 0x285E1D47U,
    41       0x36194D42U, 0x32D850F5U, 0x3F9B762CU, 0x3B5A6B9BU,
    42       0x0315D626U, 0x07D4CB91U, 0x0A97ED48U, 0x0E56F0FFU,
    43       0x1011A0FAU, 0x14D0BD4DU, 0x19939B94U, 0x1D528623U,
    44       0xF12F560EU, 0xF5EE4BB9U, 0xF8AD6D60U, 0xFC6C70D7U,
    45       0xE22B20D2U, 0xE6EA3D65U, 0xEBA91BBCU, 0xEF68060BU,
    46       0xD727BBB6U, 0xD3E6A601U, 0xDEA580D8U, 0xDA649D6FU,
    47       0xC423CD6AU, 0xC0E2D0DDU, 0xCDA1F604U, 0xC960EBB3U,
    48       0xBD3E8D7EU, 0xB9FF90C9U, 0xB4BCB610U, 0xB07DABA7U,
    49       0xAE3AFBA2U, 0xAAFBE615U, 0xA7B8C0CCU, 0xA379DD7BU,
    50       0x9B3660C6U, 0x9FF77D71U, 0x92B45BA8U, 0x9675461FU,
    51       0x8832161AU, 0x8CF30BADU, 0x81B02D74U, 0x857130C3U,
    52       0x5D8A9099U, 0x594B8D2EU, 0x5408ABF7U, 0x50C9B640U,
    53       0x4E8EE645U, 0x4A4FFBF2U, 0x470CDD2BU, 0x43CDC09CU,
    54       0x7B827D21U, 0x7F436096U, 0x7200464FU, 0x76C15BF8U,
    55       0x68860BFDU, 0x6C47164AU, 0x61043093U, 0x65C52D24U,
    56       0x119B4BE9U, 0x155A565EU, 0x18197087U, 0x1CD86D30U,
    57       0x029F3D35U, 0x065E2082U, 0x0B1D065BU, 0x0FDC1BECU,
    58       0x3793A651U, 0x3352BBE6U, 0x3E119D3FU, 0x3AD08088U,
    59       0x2497D08DU, 0x2056CD3AU, 0x2D15EBE3U, 0x29D4F654U,
    60       0xC5A92679U, 0xC1683BCEU, 0xCC2B1D17U, 0xC8EA00A0U,
    61       0xD6AD50A5U, 0xD26C4D12U, 0xDF2F6BCBU, 0xDBEE767CU,
    62       0xE3A1CBC1U, 0xE760D676U, 0xEA23F0AFU, 0xEEE2ED18U,
    63       0xF0A5BD1DU, 0xF464A0AAU, 0xF9278673U, 0xFDE69BC4U,
    64       0x89B8FD09U, 0x8D79E0BEU, 0x803AC667U, 0x84FBDBD0U,
    65       0x9ABC8BD5U, 0x9E7D9662U, 0x933EB0BBU, 0x97FFAD0CU,
    66       0xAFB010B1U, 0xAB710D06U, 0xA6322BDFU, 0xA2F33668U,
    67       0xBCB4666DU, 0xB8757BDAU, 0xB5365D03U, 0xB1F740B4U,
    71       crc = table[*data ^ ((crc >> 24) & 0xff)] ^ (crc << 8);
    78   inline unsigned int crc32LE(
unsigned int crc, 
const char * data, 
size_t len) {
    79     static const unsigned int table[256] = {
    80       0x00000000U, 0x77073096U, 0xee0e612cU, 0x990951baU,
    81       0x076dc419U, 0x706af48fU, 0xe963a535U, 0x9e6495a3U,
    82       0x0edb8832U, 0x79dcb8a4U, 0xe0d5e91eU, 0x97d2d988U,
    83       0x09b64c2bU, 0x7eb17cbdU, 0xe7b82d07U, 0x90bf1d91U,
    84       0x1db71064U, 0x6ab020f2U, 0xf3b97148U, 0x84be41deU,
    85       0x1adad47dU, 0x6ddde4ebU, 0xf4d4b551U, 0x83d385c7U,
    86       0x136c9856U, 0x646ba8c0U, 0xfd62f97aU, 0x8a65c9ecU,
    87       0x14015c4fU, 0x63066cd9U, 0xfa0f3d63U, 0x8d080df5U,
    88       0x3b6e20c8U, 0x4c69105eU, 0xd56041e4U, 0xa2677172U,
    89       0x3c03e4d1U, 0x4b04d447U, 0xd20d85fdU, 0xa50ab56bU,
    90       0x35b5a8faU, 0x42b2986cU, 0xdbbbc9d6U, 0xacbcf940U,
    91       0x32d86ce3U, 0x45df5c75U, 0xdcd60dcfU, 0xabd13d59U,
    92       0x26d930acU, 0x51de003aU, 0xc8d75180U, 0xbfd06116U,
    93       0x21b4f4b5U, 0x56b3c423U, 0xcfba9599U, 0xb8bda50fU,
    94       0x2802b89eU, 0x5f058808U, 0xc60cd9b2U, 0xb10be924U,
    95       0x2f6f7c87U, 0x58684c11U, 0xc1611dabU, 0xb6662d3dU,
    96       0x76dc4190U, 0x01db7106U, 0x98d220bcU, 0xefd5102aU,
    97       0x71b18589U, 0x06b6b51fU, 0x9fbfe4a5U, 0xe8b8d433U,
    98       0x7807c9a2U, 0x0f00f934U, 0x9609a88eU, 0xe10e9818U,
    99       0x7f6a0dbbU, 0x086d3d2dU, 0x91646c97U, 0xe6635c01U,
   100       0x6b6b51f4U, 0x1c6c6162U, 0x856530d8U, 0xf262004eU,
   101       0x6c0695edU, 0x1b01a57bU, 0x8208f4c1U, 0xf50fc457U,
   102       0x65b0d9c6U, 0x12b7e950U, 0x8bbeb8eaU, 0xfcb9887cU,
   103       0x62dd1ddfU, 0x15da2d49U, 0x8cd37cf3U, 0xfbd44c65U,
   104       0x4db26158U, 0x3ab551ceU, 0xa3bc0074U, 0xd4bb30e2U,
   105       0x4adfa541U, 0x3dd895d7U, 0xa4d1c46dU, 0xd3d6f4fbU,
   106       0x4369e96aU, 0x346ed9fcU, 0xad678846U, 0xda60b8d0U,
   107       0x44042d73U, 0x33031de5U, 0xaa0a4c5fU, 0xdd0d7cc9U,
   108       0x5005713cU, 0x270241aaU, 0xbe0b1010U, 0xc90c2086U,
   109       0x5768b525U, 0x206f85b3U, 0xb966d409U, 0xce61e49fU,
   110       0x5edef90eU, 0x29d9c998U, 0xb0d09822U, 0xc7d7a8b4U,
   111       0x59b33d17U, 0x2eb40d81U, 0xb7bd5c3bU, 0xc0ba6cadU,
   112       0xedb88320U, 0x9abfb3b6U, 0x03b6e20cU, 0x74b1d29aU,
   113       0xead54739U, 0x9dd277afU, 0x04db2615U, 0x73dc1683U,
   114       0xe3630b12U, 0x94643b84U, 0x0d6d6a3eU, 0x7a6a5aa8U,
   115       0xe40ecf0bU, 0x9309ff9dU, 0x0a00ae27U, 0x7d079eb1U,
   116       0xf00f9344U, 0x8708a3d2U, 0x1e01f268U, 0x6906c2feU,
   117       0xf762575dU, 0x806567cbU, 0x196c3671U, 0x6e6b06e7U,
   118       0xfed41b76U, 0x89d32be0U, 0x10da7a5aU, 0x67dd4accU,
   119       0xf9b9df6fU, 0x8ebeeff9U, 0x17b7be43U, 0x60b08ed5U,
   120       0xd6d6a3e8U, 0xa1d1937eU, 0x38d8c2c4U, 0x4fdff252U,
   121       0xd1bb67f1U, 0xa6bc5767U, 0x3fb506ddU, 0x48b2364bU,
   122       0xd80d2bdaU, 0xaf0a1b4cU, 0x36034af6U, 0x41047a60U,
   123       0xdf60efc3U, 0xa867df55U, 0x316e8eefU, 0x4669be79U,
   124       0xcb61b38cU, 0xbc66831aU, 0x256fd2a0U, 0x5268e236U,
   125       0xcc0c7795U, 0xbb0b4703U, 0x220216b9U, 0x5505262fU,
   126       0xc5ba3bbeU, 0xb2bd0b28U, 0x2bb45a92U, 0x5cb36a04U,
   127       0xc2d7ffa7U, 0xb5d0cf31U, 0x2cd99e8bU, 0x5bdeae1dU,
   128       0x9b64c2b0U, 0xec63f226U, 0x756aa39cU, 0x026d930aU,
   129       0x9c0906a9U, 0xeb0e363fU, 0x72076785U, 0x05005713U,
   130       0x95bf4a82U, 0xe2b87a14U, 0x7bb12baeU, 0x0cb61b38U,
   131       0x92d28e9bU, 0xe5d5be0dU, 0x7cdcefb7U, 0x0bdbdf21U,
   132       0x86d3d2d4U, 0xf1d4e242U, 0x68ddb3f8U, 0x1fda836eU,
   133       0x81be16cdU, 0xf6b9265bU, 0x6fb077e1U, 0x18b74777U,
   134       0x88085ae6U, 0xff0f6a70U, 0x66063bcaU, 0x11010b5cU,
   135       0x8f659effU, 0xf862ae69U, 0x616bffd3U, 0x166ccf45U,
   136       0xa00ae278U, 0xd70dd2eeU, 0x4e048354U, 0x3903b3c2U,
   137       0xa7672661U, 0xd06016f7U, 0x4969474dU, 0x3e6e77dbU,
   138       0xaed16a4aU, 0xd9d65adcU, 0x40df0b66U, 0x37d83bf0U,
   139       0xa9bcae53U, 0xdebb9ec5U, 0x47b2cf7fU, 0x30b5ffe9U,
   140       0xbdbdf21cU, 0xcabac28aU, 0x53b39330U, 0x24b4a3a6U,
   141       0xbad03605U, 0xcdd70693U, 0x54de5729U, 0x23d967bfU,
   142       0xb3667a2eU, 0xc4614ab8U, 0x5d681b02U, 0x2a6f2b94U,
   143       0xb40bbe37U, 0xc30c8ea1U, 0x5a05df1bU, 0x2d02ef8dU
   147       crc = table[*data ^ ((crc >> 24) & 0xff)] ^ (crc << 8);
   154   inline unsigned int crc32(
unsigned int crc, 
const char * data, 
size_t len) {
   155     static const unsigned int table[256] = {
   156       0x00000000U, 0xB71DC104U, 0x6E3B8209U, 0xD926430DU,
   157       0xDC760413U, 0x6B6BC517U, 0xB24D861AU, 0x0550471EU,
   158       0xB8ED0826U, 0x0FF0C922U, 0xD6D68A2FU, 0x61CB4B2BU,
   159       0x649B0C35U, 0xD386CD31U, 0x0AA08E3CU, 0xBDBD4F38U,
   160       0x70DB114CU, 0xC7C6D048U, 0x1EE09345U, 0xA9FD5241U,
   161       0xACAD155FU, 0x1BB0D45BU, 0xC2969756U, 0x758B5652U,
   162       0xC836196AU, 0x7F2BD86EU, 0xA60D9B63U, 0x11105A67U,
   163       0x14401D79U, 0xA35DDC7DU, 0x7A7B9F70U, 0xCD665E74U,
   164       0xE0B62398U, 0x57ABE29CU, 0x8E8DA191U, 0x39906095U,
   165       0x3CC0278BU, 0x8BDDE68FU, 0x52FBA582U, 0xE5E66486U,
   166       0x585B2BBEU, 0xEF46EABAU, 0x3660A9B7U, 0x817D68B3U,
   167       0x842D2FADU, 0x3330EEA9U, 0xEA16ADA4U, 0x5D0B6CA0U,
   168       0x906D32D4U, 0x2770F3D0U, 0xFE56B0DDU, 0x494B71D9U,
   169       0x4C1B36C7U, 0xFB06F7C3U, 0x2220B4CEU, 0x953D75CAU,
   170       0x28803AF2U, 0x9F9DFBF6U, 0x46BBB8FBU, 0xF1A679FFU,
   171       0xF4F63EE1U, 0x43EBFFE5U, 0x9ACDBCE8U, 0x2DD07DECU,
   172       0x77708634U, 0xC06D4730U, 0x194B043DU, 0xAE56C539U,
   173       0xAB068227U, 0x1C1B4323U, 0xC53D002EU, 0x7220C12AU,
   174       0xCF9D8E12U, 0x78804F16U, 0xA1A60C1BU, 0x16BBCD1FU,
   175       0x13EB8A01U, 0xA4F64B05U, 0x7DD00808U, 0xCACDC90CU,
   176       0x07AB9778U, 0xB0B6567CU, 0x69901571U, 0xDE8DD475U,
   177       0xDBDD936BU, 0x6CC0526FU, 0xB5E61162U, 0x02FBD066U,
   178       0xBF469F5EU, 0x085B5E5AU, 0xD17D1D57U, 0x6660DC53U,
   179       0x63309B4DU, 0xD42D5A49U, 0x0D0B1944U, 0xBA16D840U,
   180       0x97C6A5ACU, 0x20DB64A8U, 0xF9FD27A5U, 0x4EE0E6A1U,
   181       0x4BB0A1BFU, 0xFCAD60BBU, 0x258B23B6U, 0x9296E2B2U,
   182       0x2F2BAD8AU, 0x98366C8EU, 0x41102F83U, 0xF60DEE87U,
   183       0xF35DA999U, 0x4440689DU, 0x9D662B90U, 0x2A7BEA94U,
   184       0xE71DB4E0U, 0x500075E4U, 0x892636E9U, 0x3E3BF7EDU,
   185       0x3B6BB0F3U, 0x8C7671F7U, 0x555032FAU, 0xE24DF3FEU,
   186       0x5FF0BCC6U, 0xE8ED7DC2U, 0x31CB3ECFU, 0x86D6FFCBU,
   187       0x8386B8D5U, 0x349B79D1U, 0xEDBD3ADCU, 0x5AA0FBD8U,
   188       0xEEE00C69U, 0x59FDCD6DU, 0x80DB8E60U, 0x37C64F64U,
   189       0x3296087AU, 0x858BC97EU, 0x5CAD8A73U, 0xEBB04B77U,
   190       0x560D044FU, 0xE110C54BU, 0x38368646U, 0x8F2B4742U,
   191       0x8A7B005CU, 0x3D66C158U, 0xE4408255U, 0x535D4351U,
   192       0x9E3B1D25U, 0x2926DC21U, 0xF0009F2CU, 0x471D5E28U,
   193       0x424D1936U, 0xF550D832U, 0x2C769B3FU, 0x9B6B5A3BU,
   194       0x26D61503U, 0x91CBD407U, 0x48ED970AU, 0xFFF0560EU,
   195       0xFAA01110U, 0x4DBDD014U, 0x949B9319U, 0x2386521DU,
   196       0x0E562FF1U, 0xB94BEEF5U, 0x606DADF8U, 0xD7706CFCU,
   197       0xD2202BE2U, 0x653DEAE6U, 0xBC1BA9EBU, 0x0B0668EFU,
   198       0xB6BB27D7U, 0x01A6E6D3U, 0xD880A5DEU, 0x6F9D64DAU,
   199       0x6ACD23C4U, 0xDDD0E2C0U, 0x04F6A1CDU, 0xB3EB60C9U,
   200       0x7E8D3EBDU, 0xC990FFB9U, 0x10B6BCB4U, 0xA7AB7DB0U,
   201       0xA2FB3AAEU, 0x15E6FBAAU, 0xCCC0B8A7U, 0x7BDD79A3U,
   202       0xC660369BU, 0x717DF79FU, 0xA85BB492U, 0x1F467596U,
   203       0x1A163288U, 0xAD0BF38CU, 0x742DB081U, 0xC3307185U,
   204       0x99908A5DU, 0x2E8D4B59U, 0xF7AB0854U, 0x40B6C950U,
   205       0x45E68E4EU, 0xF2FB4F4AU, 0x2BDD0C47U, 0x9CC0CD43U,
   206       0x217D827BU, 0x9660437FU, 0x4F460072U, 0xF85BC176U,
   207       0xFD0B8668U, 0x4A16476CU, 0x93300461U, 0x242DC565U,
   208       0xE94B9B11U, 0x5E565A15U, 0x87701918U, 0x306DD81CU,
   209       0x353D9F02U, 0x82205E06U, 0x5B061D0BU, 0xEC1BDC0FU,
   210       0x51A69337U, 0xE6BB5233U, 0x3F9D113EU, 0x8880D03AU,
   211       0x8DD09724U, 0x3ACD5620U, 0xE3EB152DU, 0x54F6D429U,
   212       0x7926A9C5U, 0xCE3B68C1U, 0x171D2BCCU, 0xA000EAC8U,
   213       0xA550ADD6U, 0x124D6CD2U, 0xCB6B2FDFU, 0x7C76EEDBU,
   214       0xC1CBA1E3U, 0x76D660E7U, 0xAFF023EAU, 0x18EDE2EEU,
   215       0x1DBDA5F0U, 0xAAA064F4U, 0x738627F9U, 0xC49BE6FDU,
   216       0x09FDB889U, 0xBEE0798DU, 0x67C63A80U, 0xD0DBFB84U,
   217       0xD58BBC9AU, 0x62967D9EU, 0xBBB03E93U, 0x0CADFF97U,
   218       0xB110B0AFU, 0x060D71ABU, 0xDF2B32A6U, 0x6836F3A2U,
   219       0x6D66B4BCU, 0xDA7B75B8U, 0x035D36B5U, 0xB440F7B1U
   222     const char * tmpData = data;
   223     const char * end = tmpData + len;
   224     while(tmpData < end){
   225       crc = table[((
unsigned char) crc) ^ *tmpData++] ^ (crc >> 8);
 unsigned int crc32LE(unsigned int crc, const char *data, size_t len)
Definition: checksum.h:78
unsigned int crc32c(unsigned int crc, const char *data, size_t len)
Definition: checksum.h:2
unsigned int crc32(unsigned int crc, const char *data, size_t len)
Definition: checksum.h:154