进制转换

进制大家应该都挺熟悉的了,我们就可以也用Qt来做个实例,来个进制的转换。
下面是二进制转为十进制和十六进制的槽函数:

void Widget::onBtn1Click()
{
    //读取二进制的数,转换为其他进制
    QString str=edit1->text();
	bool ok;
	int val = str.toInt(&ok,2); //以二进制数读入
    str = str.setNum(val,10); //转为十进制字符串
	edit2->setText(str);
    str = str.setNum(val,16); //转为十六进制字符串
    str = str.toUpper();
    edit3->setText(str);
}

十进制转为二进制和十六进制的槽函数:

void Widget::onBtn2Click()
{	
    QString str=edit2->text();//读取十进制数
	int val = str.toInt();	
    str = str.setNum(val,2);//转为二进制字符串
    str = str.toUpper();
	edit1->setText(str);	
    str = str.setNum(val,16);//转为十六进制字符串
    edit3->setText(str);
}

把页面搭建好呢,然后把按钮跟槽函数连接好就行了:

connect(btn1,&QPushButton::clicked,this,&Widget::onBtn1Click);
connect(btn2,&QPushButton::clicked,this,&Widget::onBtn2Click);

那么我们是怎样将一个整数转换为不同进制的字符串的呢,我们可以使用QString的函数 setNum() 或静态函数 number(),setNum 和 number 有多个重载函数定义,可以处理各种类型的整数和浮点数,在处理整数时还可以指定进制,它们的函数原型是下面这个:

Qstring &setNum (int a, int val= 10)
QString number (int a, int val= 10)

里面的 a 是待转换的整数,val是使用的进制,缺省为十进制,也可以指定为十六进制和二进制。
我们也可以使用 QString 的静态函数 number() 和 asprintf(), QString 的 sprintf() 函数与 C 语言里的 sprintf() 函数的格式是一样的。
效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值