Есть простейший код:
#include <QCoreApplication>
#include <QtCore>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qint16 n;
qDebug() << "sizeof " << sizeof(n);
n=1;
qDebug() << n << QString::number(n, 16).toUpper();
n=32767;
qDebug() << n << QString::number(n, 16).toUpper();
n=32768;
qDebug() << n << QString::number(n, 16).toUpper();
n=-1;
qDebug() << n << QString::number(n, 16).toUpper();
return a.exec();
}
Имеем вывод:
sizeof 2
1 "1"
32767 "7FFF"
-32768 "FFFFFFFFFFFF8000"
-1 "FFFFFFFFFFFFFFFF"
Если в памяти qint16 занимает два байта, то при переполнении, например число 32768 будет отображено как -32768.
Почему QString его выводит как "FFFFFFFFFFFF8000"?
Почему не -1 в HEX не FFFF ?
Как правильно в QString вывести шестнадцатиричное значение -1?