Мне нужно передавать данные в HEX на удаленное устройство. Если я пишу:
QByteArray tmp = QByteArray::number(0);
qDebug() << tmp.toHex(); //Результат 30
QByteArray tmp2 = QByteArray::fromHex("5");
qDebug() << tmp2.toHex(); //Результат 05 - Как нужно.
//Так же пробовал пример из Qt
int n = 63;
QByteArray::number(n); // returns "63"
QByteArray::number(n, 16); // returns "3f"
QByteArray::number(n, 16).toUpper(); // returns "3F"
Я просто что-то не понимаю в его работе. Задача простая, посылать по TCP HEX значения. Откуда берется в начале 3 и как от неё избавиться.
QByteArray::number(int n, int base = 10)
Возвращает массив байтов, содержащий !СТРОКУ!, эквивалентную номеру n базовой базе (по умолчанию 10). Базой может быть любое значение от 2 до 36.
Соответственно QByteArray tmp = QByteArray::number(0); вернет строку, содержащую ноль, символ "0" имеет код 48(0x30)
Вот это QByteArray tmp2 = QByteArray::fromHex("5"); в свою очередь вернет массив, содержащий декодированное значение из hex-строки. Поскольку у вас указано "5", то оно декодируется как один байт 5(0х05)
QByteArray::number(63); - вернет СТРОКУ "63", или два байта 0х36 0х33
QByteArray::number(63, 16); - вернет СТРОКУ "3f", или два байта 0х33 0х66
Если вам надо просто добавлять байты в сетевую посылку, то используйте обычный append(unsigned char)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости