Начнем со второй задачи
2) и второй вопрос: в массиве QByteArray записано число 5000 в hex
QByteArray Number;
Number[0] = 0x13;
Nubmber[1] = 0x88;
как из этих двух байтов перевести в целое число типа int, т.е получить 5000
У Вас машинное представление "little endian", это означает что младший байт слева, первый. Поэтому правильно
C++ (Qt)
Number[0] = 0x88;
Nubmber[1] = 0x13;
qDebug() << *(short *) &Number[0];
Обратите внимание что заполнив 2 байта Вы имеете short. Если нужен int, то
C++ (Qt)
Number[0] = 0x88;
Nubmber[1] = 0x13;
Nubmber[2] = 0x0;
Nubmber[3] = 0x0;
qDebug() << *(int *) &Number[0];
Теперь вернемся к первому вопросу. Надо полагать что все введенные числа уместятся в одно число, иначе задача некорректна. Будем считать что это число int, 4 байта. Мне неизвестна ф-ция которая понимает 0x, поэтому я бы сделал так
C++ (Qt)
void ConvertHex( const QString & src, QByteArray & dst )
{
dst.clear();
QStringList lst = src.split("0x", QString::SkipEmptyParts);
// заполняем с младшего
bool Ok = true;
for (int i = lst.size() - 1; i >= 0; --i) {
unsigned int temp = lst[i].toUInt(&Ok, 16);
// одно число должно быть < 256 (00..FF)
if (!Ok || temp > 255) {
qDebug() << "Invalid input:" << lst[i];
return;
}
// слишком много чисел
if (temp && dst.size() >= 4) {
qDebug() << "String is too long" ;
return;
}
dst.push_back((char) temp);
}
// доливаем до 4 байтов
while (dst.size() < 4)
dst.push_back((char) 0);
// проверка
qDebug() << "Result" << dst.toInt();
}
Писал прямо здесь, возможны ошибки