Как преобразовать октет в QString?

У меня есть октет в моих источниках. Поэтому мне нужно преобразовать его в QString.

Я попробовал QString str (a); Но это не работает. из того, что я прочитал, октет должен быть без знака

   a = 'A';

Обновить:
a — это октет, из того, что я прочитал, написано: «Поскольку DDS_Octet эквивалентен 1 байту (8 бит)» (http://community.rti.com/kb/what-max-number-octets-i-can-put-topicdata-builtin-topics)

Обновление 2:

определяется как неподписанный символ (беззнаковый байт)

1

Решение

Перерабатывать unsigned char в QString:

unsigned char a = 'A';
QString str = QString((QChar)a);
2

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

Вы, вероятно, должны не преобразовать октет в QString сам по себе. Это приведет к некоторому избыточному преобразованию. То, что вам лучше сделать, это, вероятно, преобразовать его Q(Latin1)Char и использовать это, если вам нужно соединить некоторые манипуляции со строками.

Просто делать это само по себе выглядит нецелесообразно. Если вы все еще настаиваете на этом, используйте конструктор QString следующим образом:

main.cpp

#include <QString>
#include <QDebug>

int main()
{
unsigned char a = 'A';
QString string(a);
qDebug() << string;
return 0;
}

main.pro

TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp

Построить и запустить

qmake && make && ./main

Выход

"A"

Позвольте мне не начинать рассуждать о QString, требующей, чтобы экземпляр QCoreApplication работал должным образом, поэтому, пожалуйста, позвольте нам на секунду забыть об этом. 🙂

Это будет работать из коробки, так как QString имеет конструктор, который принимает QChar и это может быть неявно использовано, так как QChar имеет конструктор, который принимает неподписанный символ.

Кстати, октет в наши дни занимает почти исключительно 8 бит на байт. Я не стал бы беспокоиться о том, что он будет обрабатываться по-другому, иначе многие части программного обеспечения могут сломаться под ним. Просто посмотрите код из кода, который вы связали, не так ли?

// DDS_Octet is defined to be 8 bits. If chars are not 8 bits
// on your system, this will not work.
0

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