zoukankan      html  css  js  c++  java
  • CRC-32 校验算法

     

    crc32的头文件
    ===========================分割线===========================
    //crc32.h
    #ifndef _CRC32_H
    #define _CRC32_H
    
    uint crc32( uchar *buf, int len);
    
    #endif
    ===========================分割线===========================
    
    crc32的源文件
    ===========================分割线===========================
    #include <stdio.h>
    #include "crc32.h"
    
    static uint   CRC32[256];
    static char   init = 0;
    
    //初始化表
    static void init_table()
    {
        int   i,j;
        uint   crc;
        for(i = 0;i < 256;i++)
        {
             crc = i;
            for(j = 0;j < 8;j++)
            {
                if(crc & 1)
                {
                     crc = (crc >> 1) ^ 0xEDB88320;
                }
                else
                {
                     crc = crc >> 1;
                }
            }
             CRC32[i] = crc;
        }
    }
    
    //crc32实现函数
    uint crc32( uchar *buf, int len)
    {
        uint ret = 0xFFFFFFFF;
        int   i;
        if( !init )
        {
             init_table();
             init = 1;
        }
        for(i = 0; i < len;i++)
        {
             ret = CRC32[((ret & 0xFF) ^ buf[i])] ^ (ret >> 8);
        }
         ret = ~ret;
        return ret;
    }
  • 相关阅读:
    记计账需求分析
    进度条07
    Runner站立会议03
    Runner站立会议02
    Runner站立会议01
    构建之法阅读笔记03
    团队成员介绍
    团队进展报告(1)
    今日事——Sprint计划会议
    团队开发——软件需求分析报告
  • 原文地址:https://www.cnblogs.com/ITBread/p/3239976.html
Copyright © 2011-2022 走看看