C++ 如何将八位字节转换为QString?
我的资料里有一个八重奏。所以我需要把它转换成QString 我试过QString str(a);但它不起作用。从我读到的八位元假设是一个无符号字符C++ 如何将八位字节转换为QString?,c++,qt,qstring,qtcore,data-distribution-service,C++,Qt,Qstring,Qtcore,Data Distribution Service,我的资料里有一个八重奏。所以我需要把它转换成QString 我试过QString str(a);但它不起作用。从我读到的八位元假设是一个无符号字符 a = 'A'; 更新: a是八位字节,我读到它说“因为一个DDS_八位字节相当于一个字节(8位)”() 更新2: 它被定义为无符号字符(无符号字节)您可能不应该单独将八位字节转换为QString。这将产生一些多余的转换。您最好将其转换为Q(Latin1)Char,如果需要组合一些字符串操作,可以使用它 单靠自己的力量似乎不切实际。如果您仍然
a = 'A';
更新:
a是八位字节,我读到它说“因为一个DDS_八位字节相当于一个字节(8位)”() 更新2: 它被定义为无符号字符(无符号字节)您可能不应该单独将八位字节转换为
QString
。这将产生一些多余的转换。您最好将其转换为Q(Latin1)Char
,如果需要组合一些字符串操作,可以使用它
单靠自己的力量似乎不切实际。如果您仍然坚持这一点,请按如下方式使用QString构造函数:
main.cpp
构建并运行
输出
让我不要开始抱怨QString需要QCoreApplication实例才能正常工作,所以请让我们暂时忘记这一点。:-)
这将是开箱即用的,因为QString有一个,并且可以隐式使用,因为QChar有一个
顺便说一下,现在八位字节几乎完全是每字节8位。我不会担心它的处理方式会有所不同,否则许多软件部件可能会在下面断裂。只要看看你链接的代码,好吗
// DDS_Octet is defined to be 8 bits. If chars are not 8 bits
// on your system, this will not work.
将
无符号字符
转换为QString
:
unsigned char a = 'A';
QString str = QString((QChar)a);
你说的“八重奏”是什么意思?一个字节?什么是
a
?它是如何声明/定义的?您在.h文件中找到QString类了吗?有哪些构造函数重载可用?哪些赋值运算符重载可用?应该有一个字符数组。a是八位字节,从我读到它说“因为DDS_八位字节相当于1字节(8位)”()请更新你的问题,而不是在评论中散布问题。-大多数读者都知道八位字节类似于字节、8位值或无符号字符。但是编译器需要C数据类型。所以请回答约阿希姆斯的问题,“八位组”(8位)是通过网络传输的东西。它只存在于通信信道中。在你的计算机中,你有字节(每个可能或不包含8位),C++有<代码> char < /C>(总是一字节)。这只是一个术语,但重要的是要做对。我不反对投票,因为我感谢你的帮助,但是。。首先,这是带有类目标(!)的C风格转换,不一定保证在任何时候都能工作。第二,即使它是一个构造函数调用,也可以是隐式的,所以显式的意义不大。如果您不相信我的逻辑,请尝试我以前粘贴的代码。:-)此外,在我看来,鼓励char-to-QString转换本身是不好的。
qmake && make && ./main
"A"
// DDS_Octet is defined to be 8 bits. If chars are not 8 bits
// on your system, this will not work.
unsigned char a = 'A';
QString str = QString((QChar)a);