小数据
#include <QFile>//文件操作类
#include <QByteArray>//字节数组类
#include <QCryptographicHash>//计算hash值的类
#include <QFileDialog>//选择文件对话框类
#include <QString>//qt提供的字符串类
#include <QIODevice>
//调用QFileDialog类的静态函数打开选择文件对话框,传入当前对象(当前主窗口),传入文件对话框窗口名
QString fileName;
fileName = QFileDialog::getOpenFileName(this,QString("choose a file"));
QFile file(fileName);//打开用户选择的文件
if(file.open(QIODevice::ReadOnly))//以只读的方式打开文件并判断文件是否被成功打开
{
QByteArray array = file.readAll();//读取文件的所有内容
//计算md5值,传入需要被计算的数据,传入计算的类型
QByteArray md5 = QCryptographicHash::hash(array,QCryptographicHash::Md5);
md5.toHex();将md5值转为16进制便于查看
}
大数据
(分次读取计算,假设一次读100M,即按字节单位表示为1024*1024*100)
QFile file(fileName);
if(file.open(QIODevice::ReadOnly))
{
QCryptographicHash hash(QCryptographicHash::Md5);//实例化一个计算md5的对象
while(!file.atEnd())//循环直到读完
{
QByteArray content = file.read(100*1024*1024);//一次性读取100MB
hash.addData(content);//添加数据
}
QByteArray md5 = hash.result();//取出结果
}
对读取大数据的优化(创建线程,避免主界面卡死)
暂无