2

我在将十六进制值转换为带符号的十进制值时遇到问题。我正在使用 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 方式和它们的结果下面的“短”。不幸的是,我认为您需要做空。

主文件

#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 回答