Конвертировать unsigned char [10] в QBytearray;

Я видел много вопросов по этому поводу, но пока никто не работал для меня.

Я попробовал 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]

любой совет?

благодарю вас

4

Решение

Это просто проблема подписи, так что это должно работать:

databuf = QByteArray(reinterpret_cast<char*>(buf), 10);

Или с унаследованным броском в стиле C:

databuf = QByteArray((char*)buf, 10);

(Вот одна из многих дискуссий, которые вы должны использовать.)

Более простой альтернативой является удаление unsigned из декларации bufЕсли вам это не нужно по какой-то другой причине.

Обратите внимание, что если вы используете это fromRawData Метод, он не копирует байты, поэтому лучше быть уверенным buf не выйдет из области видимости слишком рано. Если не уверены, не используйте его …

8

Другие решения

Как говорится, аргумент передан fromRawData должен быть const char*не unsigned char*, Вы можете сделать ваш массив массивом const char:

const char buf[10];

Массив может быть преобразован в указатель на его первый элемент, который будет const char*точно так же, как fromRawData надеется.

1

По вопросам рекламы [email protected]