繁体   English   中英

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

[英]How to convert octet to 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:

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

unsigned char转换为QString

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

你或许应该八位位组不能转换为一个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具有采用unsigned char构造函数而可以隐式使用。

顺便说一下,这些天八位字节几乎几乎是每个字节8位。 我不担心会以不同的方式处理它,否则很多软件可能会在下面破裂。 只需从链接的代码中查看代码,好吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM