2

Hex 値を符号付き Dec 値に変換する際に問題があります。私はQtを使用しています。これはサンプルコードです。

#include <QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    int x=0xA92B;
    qDebug()<<x;
    return a.exec();
}

今は 43307 を取得していますが、-22229 を取得したいと考えています。それを行う方法はありますか?

4

2 に答える 2

5

short x = 0xA92B;使用すると符号なしの数値としてint保存されるため、試してみてください。0xA92B

于 2013-10-03T09:16:55.183 に答える
0

なぜこれが必要なのかわかりませんが、さまざまな Qt'ish の方法と、その結果の下にある「短い」を参照してください。残念ながら、あなたは短くする必要があると思います。

main.cpp

#include <QString>
#include <QTextStream>
#include <QDebug>

int main()
{
    int x = 0xA92B;
    short shortX = 0xA92B;
    QString hexString = QString::number(0xA92B);
    QTextStream decTextStream(&hexString);
    int d;
    decTextStream >> d;

    qDebug() << shortX;
    qDebug() << hexString.toInt();
    qDebug() << d;

    return 0;
} 

建物(似たようなもの)

g++ -fPIC -I/usr/include/qt -I/usr/include/qt/QtCore -lQt5Core main.cpp && ./a.out

出力

-22229
43307
43307
于 2013-10-03T09:22:25.990 に答える