1

我的资源中有一个八位字节。所以我需要将它转换为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:

其定义为无符号字符(无符号字节)

4

2 回答 2

2

转换unsigned charQString

unsigned char a = 'A';
QString str = QString((QChar)a);
于 2014-10-20T11:21:42.703 回答
0

您可能不应该单独将八位字节转换为 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 有一个采用 unsigned char 的构造函数

顺便说一句,如今八位字节几乎完全是每字节 8 位。我不会担心它的处理方式不同,否则许多软件可能会在下面崩溃。只需从您链接的代码中查看代码,好吗?

// DDS_Octet is defined to be 8 bits. If chars are not 8 bits
// on your system, this will not work.
于 2014-10-20T09:15:35.610 回答