Вероятно, вам не следует не преобразовывать октет в 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.
person
lpapp
schedule
20.10.2014
a
? Как это объявляется/определяется? - person Some programmer dude   schedule 20.10.2014char
(всегда один байт). Просто терминология, но важно правильно понять. - person n. 1.8e9-where's-my-share m.   schedule 20.10.2014I tried QString str(a); but it does not work.
Как это не работает? Как насчетQString str(QChar(a))
? - person Reinier Torenbeek   schedule 20.10.2014