Qt笔记--计算数据的md5值

小数据

#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();//取出结果
}

对读取大数据的优化(创建线程,避免主界面卡死)

暂无

猜你喜欢

转载自blog.csdn.net/qq_42131061/article/details/81709553