ご存知かもしれませんが、2 の補数表現では(32 ビットの場合) に0xFFFFFFFF
等しくなります。-1
しかし、次のコード:
qint32 aa = QString("FFFFFFFF").toInt(0, 16);
qDebug()<<aa;
印刷し0
ます。以下のコード:
qint32 aa = 0xffffffff;
qDebug()<<aa;
プリント-1
!
どうしてこれなの?
ご存知かもしれませんが、2 の補数表現では(32 ビットの場合) に0xFFFFFFFF
等しくなります。-1
しかし、次のコード:
qint32 aa = QString("FFFFFFFF").toInt(0, 16);
qDebug()<<aa;
印刷し0
ます。以下のコード:
qint32 aa = 0xffffffff;
qDebug()<<aa;
プリント-1
!
どうしてこれなの?
ドキュメントを読むと、 toInt
「変換に失敗した場合は 0 を返す」ことがわかります。
入力が符号付き 32 ビット整数に収まらないため、おそらく変換に失敗します。
ok
これは、 -パラメーターを使用して確認できます。
bool ok;
qint32 aa = QString("FFFFFFFF").toInt(&ok, 16);
if (ok) qDebug() << aa;
else qDebug() << "Conversion failed!";