PDA

View Full Version : QTextStream::UppercaseDigits



mightymark
12th May 2006, 11:34
Hi, I'm trying to get a string containing a hexadecimal number to have the letters in the number in upper case instead of lower case. I use the code below.
tagID and antennaID are both unsigned intergers.



QString outStr;
QTextStream tagLine(&outStr);
tagLine.setNumberFlags(QTextStream::UppercaseDigit s);
tagLine << "TagFound: " << hex << tagID << " on Antenna: " << antennaID;


But the resulting string always has lower case letters in the hex number:
"TagFound: 702f2cba on Antenna: 1"

Any idea what i am doing wrong?:confused: thanks

jacek
12th May 2006, 12:35
It looks like a Qt bug:
bool QTextStreamPrivate::putNumber(qulonglong number, bool negative)
{
QString tmp;
if (negative)
tmp = QLatin1Char('-');
else if (numberFlags & QTextStream::ForceSign)
tmp = QLatin1Char('+');

if (numberFlags & QTextStream::ShowBase) {
switch (integerBase) {
case 2: tmp += QLatin1String("0b"); break;
case 8: tmp += QLatin1String("0"); break;
case 16: tmp += QLatin1String("0x"); break;
default: break;
}
}

tmp += QString::number(number, integerBase ? integerBase : 10);
if (numberFlags & QTextStream::UppercaseBase) // <--- this is wrong
tmp = tmp.toUpper(); // ### in-place instead

return putString(tmp);
}