Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将八位字节转换为QString?_C++_Qt_Qstring_Qtcore_Data Distribution Service - Fatal编程技术网

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

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,如果需要组合一些字符串操作,可以使用它 单靠自己的力量似乎不切实际。如果您仍然

我的资料里有一个八重奏。所以我需要把它转换成QString

我试过QString str(a);但它不起作用。从我读到的八位元假设是一个无符号字符

   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);