admin管理员组

文章数量:1794759

QT中几种进制转换的方法

QT中几种进制转换的方法

QT中几种进制转换的方法 十进制转为其它进制 方法一

函数原型

QString QString::arg(int a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char( ' ' )) const

返回此字符串的副本,其中编号最低的位置标记替换为字符串a,即%1,%2,…, % 99。

fieldWidth指定参数a应占用的最小空间量。如果a需要的空间小于fieldWidth,则使用fillChar字符填充到fieldWidth。正的fieldWidth生成右对齐的文本。负fieldWidth生成左对齐的文本。

代码示例

int num = 11; QString str = QString("%1").arg(num, 0, 10);//11 十进制 str = QString("%1").arg(num, 0, 16);//b 十六进制 str = QString("%1").arg(num, 0, 2);//1011 二进制 str = QString("%1").arg(num, 0, 8);//13 八进制 方法二

函数原型

[static] QString QString::number(long n, int base = 10)

根据指定的基数返回与数字n等价的字符串。

基数默认为10,必须在2到36之间。对于底数不是10的情况,n被视为无符号整数。

格式总是使用QLocale::C,即English/UnitedStates。要获得数字的本地化字符串表示形式,请使用带有适当区域设置的QLocale::toString()。

代码示例

str = QString::number(num, 10);//11 十进制 str = QString::number(num, 16); //b 十六进制 str = QString::number(num, 16).toUpper(); //B 十六进制结果字母转大写 str = QString::number(num, 2);//1011 二进制 str = QString::number(num, 8); //13 八进制 方法三

函数原型

QString &QString::setNum(int n, int base = 10)

将字符串设置为指定进制的n的打印值,并返回对该字符串的引用。

基数默认为10,必须在2到36之间。对于底数不是10的情况,n被视为无符号整数。

代码示例

str = str.setNum(num,10);//11 十进制 str = str.setNum(num,16);//b 十六进制 str = str.setNum(num,2);//1011 二进制 str = str.setNum(num,8); //13 八进制 int类型和QString类型之间的互相转换 int num = 11; QString str = QString("%1").arg(num); //int转QString int n = str.toInt();//QString转int 其他进制转10进制

函数原型

uint QString::toUInt(bool *ok = Q_NULLPTR, int base = 10) const

返回使用base base转换为unsigned int的字符串,默认为10,必须在2到36之间,或者0之间。如果转换失败,则返回0。

如果发生转换错误,ok被设置为false;否则ok设置为true。

如果base为0,则使用C语言约定:如果字符串以“0x”开头,则使用进制16;如果字符串以“0”开头,则使用8进制;否则,以10为基数。

字符串转换总是在’C’地区发生。使用QLocale::toUInt()进行语言环境相关转换

代码示例

16进制转10进制

QString str = "b"; bool ok; int hex = str.toULong(&ok, 16); //11

8进制转10进制

QString str = "13"; bool ok; int hex = str.toULong(&ok, 8); //11

2进制转10进制

QString str = "1011"; bool ok; int hex = str.toULong(&ok, 2); //11

谢谢点赞、收藏

本文标签: 几种方法QT