QT 进制转换小工具 二进制/十进制/十六进制/浮点数转换
野生小菜鸟一只,程序效果如下,希望大家多多支持。
1. 按table切换LineEdit;
2. 输入要计算的数据后,按回车执行,计算后的数据会显示在同一行的另一个控件中。
3. LIneEdit内加入了正则表达式使之只能输入特定的数。
format.h
#ifndef FORMAT_H
#define FORMAT_H
#include <QDialog>
namespace Ui {
class Format;
}
class Format : public QDialog
{Q_OBJECT
public:explicit Format(QWidget *parent = 0);~Format();
private:Ui::Format *ui;
private slots:void twoTten();void twoThex();void tenTtwo();void tenThex();void hexTtwo();void hexTten();void floatThex();void hexTfloat();
private:QString binToDec(QString strBin);QString decTobin(QString strDec);QString decToHex(QString strDec);QString hexToDec(QString strHex);
};
#endif // FORMAT_H
format.cpp
#include "format.h"
#include "ui_format.h"
#include <QDebug>Format::Format(QWidget *parent) :QDialog(parent),ui(new Ui::Format)
{ui->setupUi(this);this->setAutoFillBackground(true);this->setPalette(QPalette(QColor(162,200,169)));QRegExp regBinary("[0-1]*");QValidator *validator = new QRegExpValidator(regBinary,this);ui->two_ten1->setValidator(validator);ui->two_hex1->setValidator(validator);QRegExp regDecimal("[0-9]*");QValidator *validator2 = new QRegExpValidator(regDecimal,this);ui->ten_hex1->setValidator(validator2);ui->ten_two1->setValidator(validator2);QRegExp regHexadecimal("[a-fA-F0-9]*");QValidator *validator3 = new QRegExpValidator(regHexadecimal,this);ui->hex_ten1->setValidator(validator3);ui->hex_two1->setValidator(validator3);connect(ui->two_ten1,SIGNAL(returnPressed()),this,SLOT(twoTten()));connect(ui->two_hex1,SIGNAL(returnPressed()),this,SLOT(twoThex()));connect(ui->ten_hex1,SIGNAL(returnPressed()),this,SLOT(tenThex()));connect(ui->ten_two1,SIGNAL(returnPressed()),this,SLOT(tenTtwo()));connect(ui->hex_ten1,SIGNAL(returnPressed()),this,SLOT(hexTten()));connect(ui->hex_two1,SIGNAL(returnPressed()),this,SLOT(hexTtwo()));connect(ui->float_hex1,SIGNAL(returnPressed()),this,SLOT(floatThex()));connect(ui->hex_float1,SIGNAL(returnPressed()),this,SLOT(hexTfloat()));
}Format::~Format()
{delete ui;
}void Format::twoTten(){ //二进制转十进制QString binary = ui->two_ten1->text();QString decimal = binToDec(binary);ui->ten_two1->setText(decimal);
}
void Format::twoThex(){ //二进制转十六进制QString binary = ui->two_hex1->text();QString hexadecimal = decToHex(binToDec(binary));ui->hex_two1->setText(hexadecimal);
}
void Format::tenThex(){ //十进制转十六进制QString decimal = ui->ten_hex1->text();QString hexadecimal = decToHex(decimal);ui->hex_ten1->setText(hexadecimal);
}
void Format::tenTtwo(){ //十进制转二进制QString decimal = ui->ten_two1->text();QString binary = decTobin(decimal);ui->two_ten1->setText(binary);
}
void Format::hexTten(){ //十六进制转十进制QString hexadecimal = ui->hex_ten1->text();QString decimal = hexToDec(hexadecimal);ui->ten_hex1->setText(decimal);
}
void Format::hexTtwo(){ //十六进制转二进制QString hexadecimal = ui->hex_two1->text();QString binary = decTobin(hexToDec(hexadecimal));ui->two_hex1->setText(binary);
}
void Format::floatThex(){QString strFloat = ui->float_hex1->text();float f = strFloat.toFloat();int i = *((int *)&f);QString float2 = QString("%1").arg(i,8,16,QLatin1Char('0'));QString step =float2;float2 = float2.right(4)+step.left(4);ui->hex_float1->setText(float2);
}
void Format::hexTfloat(){QString strHex = ui->hex_float1->text();QString step = strHex;strHex = strHex.right(4)+step.left(4);int c = hexToDec(strHex).toInt();float d = *(float*)&c;QString radiation = QString("%1").arg(d);ui->float_hex1->setText(radiation);
}
xijei.cpp
#include "format.h"
#include <QDebug>QString Format::binToDec(QString strBin){ //二进制转十进制QString decimal;int nDec = 0,nLen;int i,j,k;nLen = strBin.length();for(i=0;i<nLen;i++){if(strBin[nLen-i-1]=="0")continue;else{k=1;for(j=0;j<i;j++)k=k*2;nDec+=k;}}decimal = QString::number(nDec);return decimal;
}
QString Format::decTobin(QString strDec){ //十进制转二进制int nDec = strDec.toInt();int nYushu, nShang;QString strBin, strTemp;//TCHAR buf[2];bool bContinue = true;while ( bContinue ){nYushu = nDec % 2;nShang = nDec / 2;strBin=QString::number(nYushu)+strBin; //qDebug()<<strBin;strTemp = strBin;//strBin.Format("%s%s", buf, strTemp);nDec = nShang;if ( nShang == 0 )bContinue = false;}int nTemp = strBin.length() % 4;switch(nTemp){case 1://strTemp.Format(_T("000%s"), strBin);strTemp = "000"+strBin;strBin = strTemp;break;case 2://strTemp.Format(_T("00%s"), strBin);strTemp = "00"+strBin;strBin = strTemp;break;case 3://strTemp.Format(_T("0%s"), strBin);strTemp = "0"+strBin;strBin = strTemp;break;default:break;}return strBin;
}
QString Format::decToHex(QString strDec){ //十进制转十六进制int hex = strDec.toInt();QString hex1 = QString("%1").arg(hex,8,16,QLatin1Char('0'));return hex1;
}
int hex2(unsigned char ch){ //十六进制转换工具if((ch >= '0') && (ch <= '9'))return ch-0x30;else if((ch >= 'A') && (ch <= 'F'))return ch-'A'+10;else if((ch >= 'a') && (ch <= 'f'))return ch-'a'+10;return 0;
}
QString Format::hexToDec(QString strHex){ //十六进制转十进制int i;int v = 0;for(i=0;i<strHex.length();i++){v*=16;v+=hex2(strHex[i].toLatin1());}return QString::number(v);
}
format.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>Format</class><widget class="QDialog" name="Format"><property name="geometry"><rect><x>0</x><y>0</y><width>242</width><height>207</height></rect></property><property name="windowTitle"><string>Format</string></property><layout class="QGridLayout" name="gridLayout_2"><item row="0" column="0"><layout class="QGridLayout" name="gridLayout"><item row="0" column="0"><widget class="QLabel" name="label"><property name="text"><string>二进制转十进制:</string></property></widget></item><item row="0" column="1"><widget class="QLabel" name="label_2"><property name="text"><string>十进制转二进制:</string></property></widget></item><item row="1" column="0" colspan="2"><layout class="QHBoxLayout" name="horizontalLayout"><item><widget class="QLineEdit" name="two_ten1"/></item><item><widget class="QLineEdit" name="ten_two1"><property name="text"><string/></property></widget></item></layout></item><item row="2" column="0"><widget class="QLabel" name="label_3"><property name="text"><string>二进制转十六进制:</string></property></widget></item><item row="2" column="1"><widget class="QLabel" name="label_4"><property name="text"><string>十六进制转二进制:</string></property></widget></item><item row="3" column="0" colspan="2"><layout class="QHBoxLayout" name="horizontalLayout_2"><item><widget class="QLineEdit" name="two_hex1"/></item><item><widget class="QLineEdit" name="hex_two1"><property name="text"><string/></property></widget></item></layout></item><item row="4" column="0"><widget class="QLabel" name="label_5"><property name="text"><string>十进制转十六进制:</string></property></widget></item><item row="4" column="1"><widget class="QLabel" name="label_6"><property name="text"><string>十六进制转十进制:</string></property></widget></item><item row="5" column="0" colspan="2"><layout class="QHBoxLayout" name="horizontalLayout_3"><item><widget class="QLineEdit" name="ten_hex1"><property name="text"><string/></property></widget></item><item><widget class="QLineEdit" name="hex_ten1"><property name="text"><string/></property></widget></item></layout></item><item row="6" column="0"><widget class="QLabel" name="label_7"><property name="text"><string>float转十六进制:</string></property></widget></item><item row="6" column="1"><widget class="QLabel" name="label_8"><property name="text"><string>十六进制转float:</string></property></widget></item><item row="7" column="0" colspan="2"><layout class="QHBoxLayout" name="horizontalLayout_4"><item><widget class="QLineEdit" name="float_hex1"/></item><item><widget class="QLineEdit" name="hex_float1"><property name="text"><string/></property></widget></item></layout></item></layout></item></layout></widget><layoutdefault spacing="6" margin="11"/><resources/><connections/>
</ui>
功能上:基本功能是有了,但程序在计算范围上有些局限;
界面上:美观性不好,需要怎样调整和设计出好看的界面还未可知。
要是有路过的野生大牛还请对这个程序指点一二,不胜感激!
工具地址:
https://download.csdn.net/download/weixin_41493717/20685513
QT 进制转换小工具 二进制/十进制/十六进制/浮点数转换相关推荐
- 16进制ff转化为二进制_3秒钟快速转换十六进制为二进制
这里介绍下如何快速将十六进制转换为二进制: 举例,ipv6地址:FE80::1 先将FE80拆分为FE和80,我们知道F是十进制的15,E为14,我们知道二进制的八位组,全为1时(1111 1111) ...
- 如何使用Qt开发一个进制转换小工具
本游戏使用Qt5.8开发 这是一款进制转换小工具,比如十二进制的源数据15,如果您选择目标进制7进制的话,那么按下转换按钮,程序会输出[23]:程序的逻辑原理大概如此:首先把输入通过一系列算法转换成b ...
- Qt进制转换(十进制转十六进制)
Qt进制转换 十进制转十六进制 转化方法如下: int x =10;unsigned int ux = x;QString xVal = QString::number(ux, 16);//得到十六进 ...
- 编程基础 进制的定义,二进制、十进制、十六进制的相互转换
文章目录 1. 进制的定义 2. 进制的规范 3. 进制的进位运算 3.1 十进制 3.2 二进制 3.3 八进制 3.4 十六进制 3.5 进制表 4. 进制的相互转换 4.1 二进制与十进制的相互 ...
- 计算机系统中常用的进制,计算机中常用 二进制 八进制 十进制 十六进制的特点...
计算机中常用的计数制 用若干数位(由数码表示)的组合去表示一个数,各个数位之间是什么关系,即逢"几"进位,这就是进 位计数制的问题.也就是数制问题.数制,即进位计数制,是人们利用数 ...
- 汇编-输入8位二进制串并转换为16进制数显示到屏幕(利用8421转换)
今天编写了一个 输入二进制串并转换为16进制数显示到屏幕 的汇编程序 在编写过程中遇到一些问题,并解决后,想把它与大家分享. 题目是这样的: 分析题目: 可得要求 输入 11111111 得到 00F ...
- Qt进制转换以及十六进制大小写格式输出
quint16 num=0x2abc;qDebug()<<"十进制输出"<<QString("%1").arg(num);qDebug( ...
- 微型计算机有多少进制,微型计算机原理二进制十进制十六进制.doc
微型计算机原理二进制十进制十六进制 1:微处理器和微型计算机的发展 自1946年世界上第一台计算机问世以来,计算机科学与技术得到了飞速的发展,短短50多年时间,已经经历了电子管.晶体管.集成电路.超大 ...
- 汉字转换成html,汉字与16进制、汉字与Html转义符的转换
汉字与16进制.汉字与Html转义符的转换 package test; import java.io.UnsupportedEncodingException; import java.net.URL ...
最新文章
- redis 模糊删除实现
- Spring Cloud Alibaba - 19 Nacos Config配置中心加载不同微服务的通用配置的两种方式
- Thymeleaf抽取公共页面片段
- Qt消息机制和事件、事件过滤
- facebook 面试_如何为您的Facebook产品设计面试做准备
- 高数复习9.13 函数与极限
- linux cmake变量,linux – CMake错误:此项目中使用了以下变量,但它们设置为NOTFOUND...
- Debian6 / 7 Web服务器环境搭建LNMP一键安装包 | 问题汇总与解答
- java赋值两个对象数组 clone_Java:类的两个相同对象数组的克隆问题
- iOS13:UISceneDelegate
- 概率论基础-严士健 第二版 习题与补充2.4答案
- 激活函数:双曲正切函数 tanh(x)
- 世行首席经济学家:10个增加学术研究影响力的方法
- 用Python完成毫秒级抢单,助你秒杀淘宝大单
- Java霸王的大陆梦幻版_三国志霸王的大陆,喜欢三国的进
- 下单以及订单处理流程描述
- skywalking服务端_skywalking-01-搭建skywalking服务端
- 怎么联系计算机管理员,自己家电脑怎么联系网络管理员啊~~!?
- RAD 10.4中SelectDirectory函数的使用方法
- Something else
热门文章
- TensorFlow 2.0深度学习算法实战教材---第11章 循环神经网络
- Firefox:曾经打破黑暗的产品
- 「运维之美」技术周刊 ( 第 5 期 )
- win10打开此计算机慢,Win10系统打开此电脑很慢总显示在加载的解决方法
- Node.js能做什么
- 【2019暑假集训】08.05比赛总结+HduACM
- Linux时间子系统 clocksource(计算mult和shift)
- 如何开发、本地测试、发布 Laravel 扩展包?Class ‘Angkee\Admin\AdminServiceProvider‘ not found
- 一篇不错的网络数据抓包
- Oracle Patch补丁体系和如何打补丁