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

qt字符串转浮点数(qt将字符串转换为整型)include converter h include lt QMessageBox gt include lt QPixmap gt Converter Converter QWidget parent Qt WFlags flags QDialog parent flags ui

大家好,我是讯享网,很高兴认识大家。

#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-04-26 10:05
下一篇 2025-04-28 13:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/142153.html