使用零填充(前导零)将int转换为QString
我想“串”一个数字,并添加零填充,如printf("%05d")
如果数字小于5位数字将添加前导零。
用这个:
QString number = QString("%1").arg(yourNumber, 5, 10, QChar('0'));
这里的5对应于printf("%05d")
。 10是基数,你可以把hex数字打印出来。
QString QString :: rightJustified(int width,QChar fill = QLatin1Char(''),bool truncate = false)const
int myNumber = 99; QString result; result = QString::number(myNumber).rightJustified(5, '0');
结果现在是00099
简短例子:
int myNumber = 9; //Arg1: the number //Arg2: how many 0 you want? //Arg3: The base (10 - decimal, 16 hexadecimal - if you don't understand, choose 10) // It seems like only decimal can support negative numbers. QString number = QString("%1").arg(myNumber, 2, 10, QChar('0')); Output will be: 09
尝试:
QString s = s.sprintf("%08X",yournumber);
编辑:根据http://qt-project.org/doc/qt-4.8/qstring.html#sprintf文档:;
警告 :我们不build议在新的Qt代码中使用QString :: sprintf()。 相反,考虑使用QTextStream或arg(),它们都可以无缝地支持Unicodestring,并且是types安全的。 这是一个使用QTextStream的例子:
QString result; QTextStream(&result) << "pi = " << 3.14; // result == "pi = 3.14"
阅读其他文档,了解从此方法中缺less的function。
我正在尝试(这工作,但繁琐)。
QString s; s.setNum(n,base); s = s.toUpper(); presision -= s.length(); while(presision>0){ s.prepend('0'); presision--; }
自从VB 5以来,我使用了一种技术
QString theStr=QString("0000%1").arg(theNumber).right(4);