Qt之QByteArray数值转换和输出

发布时间:2024年01月13日

尽管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表示有效数字位数的最大数目。注意,小数位要四舍五入。

文章来源:https://blog.csdn.net/lsh11111/article/details/135571212
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。