源码:
void MainWindow::on_pushButton_openfile_clicked()
{
QFile file("C:/Users/Administrator/Desktop/icon/older.txt");
if(!file.open(QIODevice::ReadOnly)){
qDebug()<<"打开文件失败";
}else{
QString content = file.readAll();
QString md5 = QCryptographicHash::hash(content,QCryptographicHash::Md5);//算Md5
qDebug()<<md5.toHex;
//QMessageBox::information(this,"",content);
file.close();
}
}
出错原因:
QCryptographicHash::hash()
函数需要一个 QByteArray
类型的参数,而 content
是 QString
类型的。需要先将 QString
转换为 QByteArray
,然后再传递给 hash()
函数。可以使用 QString
的 toUtf8()
函数来完成这个转换。
修改后:
void MainWindow::on_pushButton_openfile_clicked()
{
QFile file("C:/Users/Administrator/Desktop/icon/older.txt");
if(!file.open(QIODevice::ReadOnly)){
qDebug()<<"打开文件失败";
}else{
QString content = file.readAll();
QByteArray byteArray = content.toUtf8();
QString md5 = QCryptographicHash::hash(byteArray, QCryptographicHash::Md5).toHex();//算Md5
qDebug()<<md5;
//QMessageBox::information(this,"",content);
file.close();
}
}
输出结果:
"7f22f559a13212dda2fc9760a1329319"