使用方法:先调用init_crc32_tab生成查询表,再调用calc_img_crc获得文件的CRC值。

#define Poly 0xEDB88320L//CRC32标准
static unsigned int crc_tab32[];//CRC查询表 //生成CRC查询表
void init_crc32_tab( void )
{
int i, j;
unsigned int crc; for (i=; i<; i++)
{
crc = (unsigned long)i;
for (j=; j<; j++)
{
if ( crc & 0x00000001L )
crc = ( crc >> ) ^ Poly;
else
crc = crc >> ;
}
crc_tab32[i] = crc;
}
}
//获得CRC
unsigned int get_crc32(unsigned int crcinit, unsigned char * bs, unsigned int bssize)
{
unsigned int crc = crcinit^0xffffffff; while(bssize--)
crc=(crc >> )^crc_tab32[(crc & 0xff) ^ *bs++]; return crc ^ 0xffffffff;
}
//获得文件CRC
int calc_img_crc(TCHAR *pFileName, unsigned int *uiCrcValue)
{
HANDLE hFile = CreateFile(pFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
return -;
} const unsigned int size = * ;
unsigned char crcbuf[size];
DWORD rdlen;
unsigned int crc = ;//CRC初始值为0 while(ReadFile(hFile, crcbuf, size, &rdlen, NULL), rdlen)
crc = get_crc32(crc, crcbuf, rdlen); *uiCrcValue = crc;
CloseHandle(hFile); return ;
}

获得文件的CRC32值的更多相关文章

  1. C# 中利用 CRC32 值判断文件是否重复

    需要在 NuGet 中引用 Crc32.NET 包 直接贴代码了: using Force.Crc32; using System; using System.Collections.Generic; ...

  2. C# 计算文件的 Hash 值

    /// <summary> /// 提供用于计算指定文件哈希值的方法 /// <example>例如计算文件的MD5值: /// <code> /// String ...

  3. python计算文件的md5值

    前言 最近要开发一个基于python的合并文件夹/目录的程序,本来的想法是基于修改时间的比较,即判断文件有没有改变,比较两个文件的修改时间即可.这个想法在windows的pc端下测试没有问题. 但是当 ...

  4. asp.net和js读取文件的MD5值的方法

    前言 文件的md5值,即文件签名,为了验证文件的正确性,是否被恶意篡改等.每个文件有一个唯一的md5值. 最近公司开发的app文件包的校验就有用到文件md5值. 一.asp.net获取 ①和上传文件一 ...

  5. C#计算文件的MD5值实例

    C#计算文件的MD5值实例 MD5 是 Message Digest Algorithm 5(信息摘要算法)的缩写,MD5 一种散列(Hash)技术,广泛用于加密.解密.数据签名和数据完整性校验等方面 ...

  6. python检测文件的MD5值

    python检测文件的MD5值MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2.MD3和MD4发展而来.MD5算法的使用不需要支付任何版权 ...

  7. ANDROID中获取STRING.XML,DIMENS.XML等资源文件中的值

    一:是为了国际化,当需要国际化时,只需要再提供一个string.xml文件,把里面的汉子信息都修改为对应的语言(如,English),再运行程序时,android操作系统会根据用户手机的语言环境和国家 ...

  8. 计算文件的MD5值(Java & Rust)

    Java public class TestFileMD5 { public final static String[] hexDigits = { "0", "1&qu ...

  9. 计算字符串和文件的MD5值

    //计算字符串的MD5值 public string GetMD5(string sDataIn) { MD5CryptoServiceProvider md5 = new MD5CryptoServ ...

随机推荐

  1. Python-递加计数器

    计数本:number.txt 1 2 3 4 主程序:计数器 # Author: Stephen Yuan # 递加计算器 import os # 递加计算器 def calc(): file_siz ...

  2. Java分割ID和姓名(String不能当输出参数)

    ID:包括数字和字母 姓名:汉字 package org.ah; import org.ah.utils.Utils; public class Test { public static void m ...

  3. JAVA方法参数传递

    package demo.methodparamDemo; public class MethodParamsDemo { public static void main(String[] args) ...

  4. 日志模块logging

    import logging # 设置日志基础样式 logging.basicConfig(level=logging.INFO, format='levelname:%(levelname)s fi ...

  5. nginx+python+windows 开始

    参考文章:http://www.testwo.com/article/311 参考如上文章基本能够完成hello world示例,我来记录下自己操作步骤及不同点,用以备忘,如果能帮助到其他人更好. 以 ...

  6. ActiveMQ(2)---ActiveMQ原理分析之消息发送

    持久化消息和非持久化消息的发送策略 消息同步发送和异步发送 ActiveMQ支持同步.异步两种发送模式将消息发送到broker上.同步发送过程中,发送者发送一条消息会阻塞直到broker反馈一个确认消 ...

  7. __module__ 和 __class__

    __module__  查看当前方法来之于那个文件 __class__  查看当前方法来之于那个类

  8. tp5框架中jquery+ajax分页

    jaxa分页,点击按钮直接替换数据, //php代码$page=Request::instance()->param("page"); $page = empty($page ...

  9. 31_NavLink组件包装优化

    简单理解为自定义一个组件并自带样式 import React, {Component} from 'react' import {Switch, Route, Redirect} from 'reac ...

  10. Sql Server数据库之约束

    一.约束的分类 实体约束:关于行的约束,比如某一行出现的值就不允许别的行出现,如主键 域约束:关于列的约束,对表中所有行的某些列进行约束,如check约束 参照完整性约束:如果某列的值必须与其他列的值 ...