Я видел много вопросов по этому поводу, но пока никто не работал для меня.
Я попробовал 2 наиболее распространенных ответа, но я получаю ту же ошибку.
быть но unsigned char buf[10];
этот,
QByteArray databuf;
databuf = QByteArray::fromRawData(buf, 10);
или это,
QByteArray databuf;
databuf = QByteArray(buf, 10);
получил ту же ошибку,
error: invalid conversion from 'unsigned char*' to 'const char*' [-fpermissive]
любой совет?
благодарю вас
Это просто проблема подписи, так что это должно работать:
databuf = QByteArray(reinterpret_cast<char*>(buf), 10);
Или с унаследованным броском в стиле C:
databuf = QByteArray((char*)buf, 10);
(Вот одна из многих дискуссий, которые вы должны использовать.)
Более простой альтернативой является удаление unsigned
из декларации buf
Если вам это не нужно по какой-то другой причине.
Обратите внимание, что если вы используете это fromRawData
Метод, он не копирует байты, поэтому лучше быть уверенным buf
не выйдет из области видимости слишком рано. Если не уверены, не используйте его …
Как говорится, аргумент передан fromRawData
должен быть const char*
не unsigned char*
, Вы можете сделать ваш массив массивом const char
:
const char buf[10];
Массив может быть преобразован в указатель на его первый элемент, который будет const char*
точно так же, как fromRawData
надеется.