1. 程式人生 > >工作記錄:處理閃燈資料檔案,需要將10進位制轉為3位十六進位制

工作記錄:處理閃燈資料檔案,需要將10進位制轉為3位十六進位制

Vixen生成的.csv檔案,需要把裡面的資料轉為3位的16進位制。自己寫了一個程式來處理,在此記錄一下。

平臺:Qt Creator

/***********************
* Name    :    main.cpp
* Author  :    Lon
* Date    :    2018-11-27
************************/
#include <iostream>
#include <QFile>
#include <QByteArray>
#include <QString>
#include <QDebug>


using namespace std;
QString getsrc(int a);
QString DEC2HEX(int a);
int main()
{

    QFile file("E:/Arya/program/workplace/qt/lon/1.csv");
    QFile out("E:/Arya/program/workplace/qt/lon/1.dat");
    if(file.open(QIODevice::ReadOnly | QIODevice::Text)){

        if(out.open(QIODevice::WriteOnly | QIODevice::Text)){
            while(!file.atEnd()){
                QByteArray line=file.readLine();
                QString str(line);
                int one=str.section(",",0,0).trimmed().toInt();
                int two=str.section(",",1,1).trimmed().toInt();
                int thr=str.section(",",2,2).trimmed().toInt();
                int fou=str.section(",",3,3).trimmed().toInt();
                int fiv=str.section(",",4,4).trimmed().toInt();
                QString strin;
                strin.append(DEC2HEX(one)).append(",").append(DEC2HEX(two)).append(",").append(DEC2HEX(thr)).append(",").append(DEC2HEX(fou)).append(",").append(DEC2HEX(fiv)).append("\n");
                out.write(strin.toUtf8());
            }
        }
        out.close();
        file.close();
    }else{
        qDebug()<<"open fail";
    }

    return 0;
}

/**十進位制轉16進位制*/
QString getsrc(int a){
        QString str;
        switch(a){
        case 0:str="0";break;
        case 1:str="1";break;
        case 2:str="2";break;
        case 3:str="3";break;
        case 4:str="4";break;
        case 5:str="5";break;
        case 6:str="6";break;
        case 7:str="7";break;
        case 8:str="8";break;
        case 9:str="9";break;
        case 10:str="A";break;
        case 11:str="B";break;
        case 12:str="C";break;
        case 13:str="D";break;
        case 14:str="E";break;
        case 15:str="F";break;
        }
        return str;
}

QString DEC2HEX(int a){
        QString src;
        if(a<=15){
            src="00";
            src.append(getsrc(a));
        }else if(a<=255){
            src="0";
            src.append(getsrc(a/16));
            src.append(getsrc(a%16));
        }else{
            src.append(getsrc(a/256));
            src.append(getsrc((a-256)/16));
            src.append(getsrc((a-256)%16));
        }
        return src;
}

/**************************
*    Name    :lon.pro
*    Aruthor : Lon
**************************/
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG += qt

SOURCES += \
        main.cpp