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;
    }
  • 相关阅读:
    一场由空格引发的错误数据
    ECS服务器搭建Discuz 邮箱设置,报错处理
    MS SQL CASE WHEN 的用法
    sql prompt 缩写 快捷键
    CentOS 防火墙
    docker swarm
    docker machine
    docker-compose 配置
    docker-compsoe & .netcore & nginx
    dockerfile
  • 原文地址:https://www.cnblogs.com/ITBread/p/3239976.html
Copyright © 2011-2022 走看看