1

ご存知かもしれませんが、2 の補数表現では(32 ビットの場合) に0xFFFFFFFF等しくなります。-1しかし、次のコード:

qint32 aa = QString("FFFFFFFF").toInt(0, 16);
qDebug()<<aa;

印刷し0ます。以下のコード:

qint32 aa = 0xffffffff;
qDebug()<<aa;

プリント-1

どうしてこれなの?

4

2 に答える 2

5

ドキュメントを読むと、 toInt「変換に失敗した場合は 0 を返す」ことがわかります。

入力が符号付き 32 ビット整数に収まらないため、おそらく変換に失敗します。

okこれは、 -パラメーターを使用して確認できます。

bool ok;
qint32 aa = QString("FFFFFFFF").toInt(&ok, 16);
if (ok) qDebug() << aa;
else qDebug() << "Conversion failed!";
于 2013-07-14T10:50:20.743 に答える