FinderCheng
博主 回复了lexdene
2010-05-22 10:23
QDataStream 如何操作 QByteArray ?|@|为什么我下面这段代码得到的结果和我想象的不一样?|@||@|#include |@|#include |@|#include |@|#include |@||@|int main(int argc, char *argv[])|@|{|@| QCoreApplication a(argc, argv);|@| QByteArray data;|@| QDataStream stream(&data,QIODevice::WriteOnly);|@| QString str="elephant logon";|@| data.resize(100);|@| qDebug()<
首先,请注意,字符串的输出都是双引号的,所以,你上面的输出结果只有一个左引号,也就是说这个输出并不完全,所以,这不是没有写入,而是你的输出形式是错误的。那么就用下qDebug()<
这里的结果是"0000001c0065006c0065007000680061006e00740020006c006f0067006f006e",前两个字节是0x1C,也就是28。你的写入内容是14个字符,换成UTF-16就是28字节的长度,也就是文档中写的“The string length in bytes (quint32) followed by the data in UTF-16”,至于为什么一开始的直接输出是半个括号,大概就是因为前一个字节是'\0',直接当成截断了吧?这个我也只是猜测。
回复
点赞
删除