У меня есть октет в моих источниках. Поэтому мне нужно преобразовать его в 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:
определяется как неподписанный символ (беззнаковый байт)
Перерабатывать unsigned char
в QString
:
unsigned char a = 'A';
QString str = QString((QChar)a);
Вы, вероятно, должны не преобразовать октет в QString
сам по себе. Это приведет к некоторому избыточному преобразованию. То, что вам лучше сделать, это, вероятно, преобразовать его Q(Latin1)Char
и использовать это, если вам нужно соединить некоторые манипуляции со строками.
Просто делать это само по себе выглядит нецелесообразно. Если вы все еще настаиваете на этом, используйте конструктор QString следующим образом:
#include <QString>
#include <QDebug>
int main()
{
unsigned char a = 'A';
QString string(a);
qDebug() << string;
return 0;
}
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.