核心代码。
#include
#include
#include
QString qstring2hex(char *pbuf,qint64 len)
{
qint64 i;
QString str1;
uint8_t temp_buf[1024];
if (len>1024)return NULL;
for (i=0; i<len; i++)
{
temp_buf[i] = pbuf[i];
}
switch(len)
{
case 0x00:
return NULL;
case 0x01:
str1.sprintf("0x%02x,",temp_buf[0]);
break;
case 0x02:
str1.sprintf("0x%02x,0x%02x,",temp_buf[0],temp_buf[1]);
break;
case 0x03:
str1.sprintf("0x%02x,0x%02x,0x%02x,",\
temp_buf[0],temp_buf[1],temp_buf[2]);
break;
case 0x04:
str1.sprintf("0x%02x,0x%02x,0x%02x,0x%02x,",\
temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3]);
break;
case 0x05:
str1.sprintf("0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,",\
temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],temp_buf[4]);
break;
case 0x06:
str1.sprintf("0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,",\
temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],temp_buf[4],temp_buf[5]);
break;
case 0x07:
str1.sprintf("0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,",\
temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],\
temp_buf[4],temp_buf[5],temp_buf[6]);
break;
case 0x08:
str1.sprintf("0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,",\
temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],\
temp_buf[4],temp_buf[5],temp_buf[6],temp_buf[7]);
break;
case 0x09:
str1.sprintf("0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,",\
temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],\
temp_buf[4],temp_buf[5],temp_buf[6],temp_buf[7],\
temp_buf[8]);
break;
case 10:
str1.sprintf("0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,",\
temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],\
temp_buf[4],temp_buf[5],temp_buf[6],temp_buf[7],\
temp_buf[8],temp_buf[9]);
break;
case 11:
str1.sprintf("0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,",\
temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],\
temp_buf[4],temp_buf[5],temp_buf[6],temp_buf[7],\
temp_buf[8],temp_buf[9],temp_buf[10]);
break;
case 12:
str1.sprintf("0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,",\
temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],\
temp_buf[4],temp_buf[5],temp_buf[6],temp_buf[7],\
temp_buf[8],temp_buf[9],temp_buf[10],temp_buf[11]);
break;
case 13:
str1.sprintf("0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,",\
temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],\
temp_buf[4],temp_buf[5],temp_buf[6],temp_buf[7],\
temp_buf[8],temp_buf[9],temp_buf[10],temp_buf[11],\
temp_buf[12]);
break;
case 14:
str1.sprintf("0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,",\
temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],\
temp_buf[4],temp_buf[5],temp_buf[6],temp_buf[7],\
temp_buf[8],temp_buf[9],temp_buf[10],temp_buf[11],\
temp_buf[12],temp_buf[13] );
break;
case 15:
str1.sprintf("0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,",\
temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],\
temp_buf[4],temp_buf[5],temp_buf[6],temp_buf[7],\
temp_buf[8],temp_buf[9],temp_buf[10],temp_buf[11],\
temp_buf[12],temp_buf[13],temp_buf[14] );
break;
case 16:
str1.sprintf("0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,",\
temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],\
temp_buf[4],temp_buf[5],temp_buf[6],temp_buf[7],\
temp_buf[8],temp_buf[9],temp_buf[10],temp_buf[11],\
temp_buf[12],temp_buf[13],temp_buf[14],temp_buf[15] );
break;
}
return str1;
}
void MainWindow::on_pushButton_clicked()
{
QString curpath=QDir::currentPath();//保存当前路径
QString dlgTitle="打开一个文件";
QString filter=";文本文件(*.bmp);;所有文件(*.*)";//程序文件(*.h *.cpp);
QString afilname=QFileDialog::getOpenFileName(this,dlgTitle,curpath,filter);
if(afilname.isEmpty())
{
return;
}
//openText(afilname);
ui->label->setText(afilname);
QFile aFile(afilname);
if(!aFile.exists())//如果文件不存在
return ;
if(!aFile.open(QIODevice::ReadOnly ))//如果不是以只读和文本方式打开文件返回false
return ;
//|QIODevice::Text
#if 1
qint64 i,position,left,temp;
QByteArray line;
char *buf;//只是一个指针
int len;//buf的长度
while (!aFile.atEnd())
{
line = aFile.readLine();
buf = line.data();
len = line.size();
uint8_t temp;
QString str1;
position = 0;
left = len;
while(left)
{
if (left>16)
temp = 16;
else
temp = left;
str1 = qstring2hex(&buf[position],temp);
ui->textEdit->append(str1);
position += temp;
left -= temp;
}
}
aFile.close();
#endif
}