Ramiien Ответов: 2

QT: QString to Hexadecimal


Я знаю, что это очень простой вопрос, но я новичок в Qt и не знаю, как это сделать. Я пытаюсь преобразовать значение QString (например, "FF") в шестнадцатеричное. Я хотел бы получить 0xFF. Я смотрю примерно так

Источник QString str= "20FF";
целевой результат инт Хекс= 0x20FF;

Не могли бы вы мне помочь? спасибо.

2 Ответов

Рейтинг:
2

CPallini

На самом деле нет никакого "преобразования в шестнадцатеричный".
str является ли шестнадцатеричное представление 8447 номер.
0x20FF это просто константа[^] вы могли бы использовать для того, чтобы указать номер в исходном коде.

[обновление]
Для того чтобы сравнить число представленное строкой str с фактическим int значение, которое вы должны сначала преобразовать str к целому числу, используя 16 в качестве базы. Видеть "int QString::toInt(bool * ok = 0, int base = 10) const"[^]
[/обновление]


Ramiien

Проблема, с которой я столкнулся, заключается в том, что я хочу сравнить два значения. Значение из сети находится в QString str= 20FF. а значение в QHash равно int value= 20FF.

CPallini

Взгляните на мое обновленное решение.

CPallini

QString обеспечивает толонглонг метод.

Jochen Arndt

Для 64-разрядных значений используйте QString::toULongLong(значение null, 16) или QString::toULongLong(нуль, 0), когда строка начинается с "0x".
Видишь ли http://doc.qt.io/qt-5/qstring.html#toULongLong.

Но обратите внимание, что функции QString::toXXX терпят неудачу, когда есть другие символы (а не только простая числовая строка). Для этих случаев вы также можете использовать стандартную функцию C strtoull (), передающую str.ToLocal8Bit().data().

Рейтинг:
2

Member 14597349

Файл QFile("data.dat");
QByteArray Hex;
if (!file.open(QIODevice::ReadOnly))
{
;
}

Наговор = файл.readAll();
unsigned char hex[262182];
qint32 start = 0, size = 262182;
::memcpy(hex + start,Hex.constData(), размер);


Richard Deeming

Необъяснимый, неформатированный дамп кода-это не решение проблемы.