Qt之QByteArray数值转换和输出

尽管QByteArray类是一个集合,但也可以作为一个特殊形式的数值来用,其灵活的转换格式可大大一方便各种格式数据转换与显示的需求,如显示二进制和十六进制、显示科学记数和指定小数位的数值。QByteArray类的公有静态函数number可以完成这些功能,该函数可以将某个整数转为某种进制的字符数组,函数number的原型声明如下:

QByteArray number(int n, int base = 10)

其中,参数n是要转变的整数;base是要进行转换的进制,进制取值范围为2到36,即从二进制到三十六进制。该函数返回整数n对应的base进制的字符数组。下列代码演示了number函数的使用:

int n = 63;
qDebug () <<QByteArray: :number (n) ;// returns "63"
qDebug ()<<QByteArray: :number(n, 16);// returns "3f"
qDebug()<<QByteArray::number (n, 16).toUpper(); // returns "3F"
qDebug () <<QByteArray::number (n, 2);// returns "111111"
qDebug ()<<QByteArray: :number (n, 8);// returns "77"

 与此公有静态函数功能类似的公有函数是setNum,该函数也是将某个整数转为某种进制的字符数函数的原型声明如下:

QByteArray & setNum(int n, int base = 10)

其中,参数n是要转变的整数;base是要进行转换的进制,进制取值范围为2到36, 即从二进制到三十六进制。该函数返回整数n对应的base进制的字符数组。下列代码演示了setNum函数的使用:

QByteArray ba;
int n = 63;
 ba.setNum(n);// ba an "63"
ba.setNum(n, 16); ba == "3f"

因为不是静态函数,所以要用对象来调用。此外,根据setNum()函数第一个参数的类型,setNum函数可以有多种版本,比如:

QByteArray &QByteArray::setNum(ushort n, int base =10)
QByteArray &QByteArray::setNum(short n, int base = 10)
QByteArray &QByteArray::setNum(uint n, int base = 10)
QByteArray &QByteArray::setNum(qlonglong n, int base = 10)

用法类似,只是n的取值范围不同。除了整数之外,还能把数值按指定格式和小数位转换输出,所调用的函数依旧是number,只不过参数形式变了:

QByteArray number(double n, char f= 'g', int prec = 6)

其中,参数n是要进行转换的实数;f表示转换格式,取值如下:

其中,参数n是要进行转换的实数:表示转换格式,取值如下:e:采用指数法表示实数,此时实数的格式如[-]9.9E: 格式同e,不过E要大写。f:普通小数表示法,此时格式如[-]9.9g: 使用e或格式,第三个参数表示有效数字位的个数,G: 使用E或f格式,第三个参数表示有效数字位的个数当参数f为'e、'E'或'f'时,prec表示十进制小数点后小数部分的位数;当f为'g'或'G时, prec表示有效数字位数的最大数目。注意,小数位要四舍五入。

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行者..................

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值