如何将八位字节转换为QString?

时间:2014-10-20 08:37:51

标签: c++ qt qstring qtcore data-distribution-service

我的资料中有一个八位字节。所以我需要将它转换为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(无符号字节)

2 个答案:

答案 0 :(得分:2)

unsigned char转换为QString

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

答案 1 :(得分:0)

你可能将八位字节自己转换为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有constructor that takes QChar并且可以隐式使用,因为QChar有constructor that takes an unsigned char

顺便说一句,这几天八位字节几乎每字节只有8位。我不担心它的处理方式不同,否则许多软件可能会破坏。只需查看您链接的代码中的代码,是吗?

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