Рейтинг:
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
Необъяснимый, неформатированный дамп кода-это не решение проблемы.