• 7858阅读
  • 5回复

[提问]QbyteArry转成QString数据为空 [复制链接]

上一主题 下一主题
离线tygg_ylpp
 

只看楼主 倒序阅读 楼主  发表于: 2013-10-16
QbyteArry转成QString数据为空
RT
做一个网络程序,接收数据后想把它转成QString类型的但是一旦强转就出错,而且是了好多的方法也不行,但是我的QByteArry中是有数据的(helloworld),很明显那个Recv_arry中也存了helloworld。并且将QByteArry转成Hex有数据,求解?????
  1. QByteArray arry;
  2. while(mysocket->bytesAvailable()>0)
  3. {
  4. if(blocksize==0)
  5. {
  6. QDataStream in(mysocket);
  7. in.setVersion(QDataStream::Qt_5_0);
  8. if(mysocket->bytesAvailable()<sizeof(quint16))
  9. return;
  10. in>>blocksize;
  11. }
  12. recv_arry=mysocket->read(blocksize);
  13. qDebug()<<(QString)recv_arry;
  14. }


离线ppdayz

只看该作者 1楼 发表于: 2013-10-16
不要用强转。
qDebug()<<(QString)recv_arry;这个代码是不推荐的,
QByteArray 和QString完全是2个不同的东西,你可以把老虎强转成狮子吗?

从QByteArray arry;里面得到数据,然后再构建QString
char * QByteArray::data ();
然后由得到的char *构建QString
离线dbzhang800

只看该作者 2楼 发表于: 2013-10-16
首先. 如此强制转换是错误的。即使在其他可以使用的场合,C风格的强制类型转换也是需要尽力避免的。

其次,转成QString的目的是什么,你希望转换后QString的内容是什么?
离线facatcool
只看该作者 3楼 发表于: 2013-10-16
直接QString(recv_arry)也是可以的。
离线tygg_ylpp

只看该作者 4楼 发表于: 2013-10-16
引用第1楼ppdayz于2013-10-16 09:09发表的  :
不要用强转。
qDebug()<<(QString)recv_arry;这个代码是不推荐的,
QByteArray 和QString完全是2个不同的东西,你可以把老虎强转成狮子吗?
从QByteArray arry;里面得到数据,然后再构建QString
.......

问题现在是我按照你们的转换方式还是不行。不晓得为什么那个字节数组开始前面有那些个'\0'符号不管怎么转我这里都是空
离线tygg_ylpp

只看该作者 5楼 发表于: 2013-10-16
还有就是我在发送数据的时候使用的数据流(QdataStream)的形式是不是里面编码了还是怎么回事???
快速回复
限100 字节
 
上一个 下一个