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

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 QPixmap QMessageBox

#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;

编程小号
上一篇 2025-03-22 12:01
下一篇 2026-02-08 13:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/41580.html