文件CheckSum累加和校驗計算

文件累加和校驗計算

#include "mainwindow.h"

#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::on_action_O_triggered()
{
    filename = QFileDialog::getOpenFileName(this,
            tr("Open Bin File"),".",
            tr("Bin files(*.bin)"));
    if(!filename.isEmpty())
        ui->lineEdit->setText(filename);
}
int MainWindow::CHECKSUM(QByteArray buf)
{
    int sum = 0;
    for(int i = 0; i < buf.size(); i++)
    {
        sum += buf.at(i) & 0x000000FF;
    }
    return sum;
}
void MainWindow::on_pushButton_Open_clicked()
{
    on_action_T_triggered();
}
void MainWindow::on_action_T_triggered()
{
    QString scrFile = ui->lineEdit->text();
    //讀二進制文件
    QFile rfile(scrFile);
    if(!rfile.open(QIODevice::ReadOnly))
    {
        QMessageBox::critical(this,"Warning", "Can't open file for reading",QMessageBox::Ok);
        rfile.close();
        return;
    }
    int sum = CHECKSUM(rfile.readAll());
    QString temp2 = QString::number(sum, 16);
    ui->lineEdit_2->setText("0x" + temp2);
    rfile.close();
}


包含頭文件:

#ifndef MAINWINDOW_H

#define MAINWINDOW_H
#include <QMainWindow>
#include <QFileDialog>
#include <QMessageBox>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    int CHECKSUM(QByteArray buf);
private slots:
    void on_action_O_triggered();
    void on_pushButton_Open_clicked();
    void on_action_T_triggered();
private:
    Ui::MainWindow *ui;
    QLabel *label;
    QImage image;
    QString filename;
};
#endif // MAINWINDOW_H

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章