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

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