当前位置:网站首页 > 编程语言 > 正文

qt字符串转浮点数(qt将字符串转换为整型)

#include "converter.h"

#include <QMessageBox>

#include <QPixmap>

Converter::Converter(QWidget *parent, Qt::WFlags flags)

: QDialog(parent, flags)

{

ui.setupUi(this);

QPalette palette;

//palette.setBrush(QPalette::Background,QBrush(QPixmap(":/Converter/Resources/bk1.jpg").scaled(this->size())));

this->setPalette(palette);

QPixmap ahead(":/Converter/Resources/ahead.png");

QPixmap back(":/Converter/Resources/back.png");

ui.pushButton_htof->setIcon(ahead);

ui.pushButton_ftoh->setIcon(back);

ui.pushButton_htoi->setIcon(ahead);

ui.pushButton_itoh->setIcon(back);

connect(ui.pushButton_htof,SIGNAL(clicked()),this,SLOT(pushButton_htof()));

connect(ui.pushButton_ftoh,SIGNAL(clicked()),this,SLOT(pushButton_ftoh()));

connect(ui.pushButton_htoi,SIGNAL(clicked()),this,SLOT(pushButton_htoi()));

connect(ui.pushButton_itoh,SIGNAL(clicked()),this,SLOT(pushButton_itoh()));

}

Converter::~Converter()

{

}

void Converter::pushButton_htof()

{

float f=hexTofloat(ui.lineEdit_fhex->text());

QString str=QString("%1").arg(f);

ui.lineEdit_ff->setText(str);

}

void Converter::pushButton_ftoh()

{

float ff=ui.lineEdit_ff->text().toFloat();

QString str=floatTohex(ff);

ui.lineEdit_fhex->setText(str);

}

void Converter::pushButton_htoi()

{

int i=hexToint(ui.lineEdit_ihex->text());

QString str=QString("%1").arg(i);

ui.lineEdit_ii->setText(str);

}

void Converter::pushButton_itoh()

{

int ii=ui.lineEdit_ii->text().toInt();

QString str=intTohex(ii);

ui.lineEdit_ihex->setText(str);

}

int Converter:: hexToint(QString str)

{

str.replace(QRegExp("[\s]+"), "");

if (!str.contains("0x",Qt::CaseInsensitive))

str.insert(0,"0x");

QByteArray ba = str.toLatin1();

char * pBuff= ba.data();

int nValude=0;

sscanf(pBuff,"%x",&nValude);

return nValude;

}

QString Converter:: intTohex(int i)

{

char buffer[200];

sprintf( buffer,"%X",i );//转成大写十六进位

QString str=QString("%1").arg(buffer);

if (str.length()==0) str.insert(0,"00000000");

if (str.length()==1) str.insert(0,"0000000");

if (str.length()==2) str.insert(0,"000000");

if (str.length()==3) str.insert(0,"00000");

if (str.length()==4) str.insert(0,"0000");

if (str.length()==5) str.insert(0,"000");

if (str.length()==6) str.insert(0,"00");

if (str.length()==7) str.insert(0,"0");

QString stt;

for(int i = 0;i<str.length ();i+=2)

{

QString st = str.mid (i,2);

stt += st;

stt += " ";

}

return stt;

}

QString Converter:: floatTohex(float f)

{

int *ii = (int *)&f;

char buffer[100];

memset(buffer,0,100);

sprintf( buffer,"%X",*ii );//转成大写十六进位

QString str=QString("%1").arg(buffer);

if(str=="0")

return "00 00 00 00";

else

{

QString stt;

for(int i = 0;i<str.length ();i+=2)

{

QString st = str.mid (i,2);

stt += st;

stt += " ";

}

return stt;

}

}

float Converter:: hexTofloat(QString str)

{

str.replace(QRegExp("[\s]+"), "");

if (str.contains("0x",Qt::CaseInsensitive))

str.remove("0x", Qt::CaseInsensitive);

float f;

int Len=str.length();

int i;

QString m_Binary,m_Decimal;

if (Len>8)

QMessageBox::warning(this,"警告","输入字符串长度错误!");

else

{

for (i=0;i<8-Len;i++)

{

str.insert(0,'0');

}

}

m_Binary=HextoBinary(str);

m_Decimal=BinarytoDecimal(m_Binary);

f=m_Decimal.toFloat();

return f;

}

QString Converter::HextoBinary(QString Hex)

{

QString str;

int i;

for(i=0;i<Hex.length();i++)

{

char buf[5];

memset(buf,0,5);

if (Hex.at(i).toAscii()>='0'&&Hex.at(i).toAscii()<='9')

itoa(Hex.at(i).toAscii()-48,buf,2);

else if (Hex.at(i).toAscii()>='A'&&Hex.at(i).toAscii()<='Z') itoa(Hex.at(i).toAscii()-65+10,buf,2);

else if (Hex.at(i).toAscii()>='a'&&Hex.at(i).toAscii()<='z') itoa(Hex.at(i).toAscii()-97+10,buf,2);

else QMessageBox::warning(this,"警告","输入格式错误");

if (strlen(buf)==0) str+="0000";

if (strlen(buf)==1) str+="000";

if (strlen(buf)==2) str+="00";

if (strlen(buf)==3) str+="0";

str+=buf;

}

return str;

}

QString Converter::BinarytoDecimal(QString Bin)

{

QString str;

int i;

float Num=0;

int signal=1;

if (Bin.at(0)=='1') signal=-1;

int exp=0;

for (i=1;i<=8;i++)

exp=exp*2+Bin.at(i).toAscii()-48;

if (exp==0) return QString('0');

exp-=127;

Num=pow(2.0,exp);

for(i=9;i<32;i++)

{

if (Bin.at(i).toAscii()-48!=0)

Num+=pow(2.0,exp-(i-9+1));

}

Num*=signal;

str=QString("%1").arg(Num);

return str;

到此这篇qt字符串转浮点数(qt将字符串转换为整型)的文章就 介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在 编程的领域有一番成就!

版权声明


相关文章:

  • 如何设置samba共享(win10设置samba共享)2025-10-29 23:54:07
  • jvm内存模型(Jvm内存模型)2025-10-29 23:54:07
  • 故障码P0515详解与维修方法2025-10-29 23:54:07
  • vs多个源文件怎么单独生成(visual studio多个源文件)2025-10-29 23:54:07
  • 圈一圈英语怎么读音标(圈一圈的英文怎么写)2025-10-29 23:54:07
  • kubelet 日志(kubelet日志在哪里看)2025-10-29 23:54:07
  • 二级域名ip地址(二级域名ip地址怎么查)2025-10-29 23:54:07
  • 广度优先搜索(广度优先搜索树)2025-10-29 23:54:07
  • pillow怎么读的(pillow怎么读的英语)2025-10-29 23:54:07
  • dv试验(dv试验和pv试验的区别)2025-10-29 23:54:07
  • 全屏图片