文件累加和校驗計算
#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