闲来无事,随便折腾,发现了一个有意思的情况。
- C/C++ code
int main(int argc, char *argv[]){ QApplication a(argc, argv); char buffer[100]; QString name = QFileDialog::getOpenFileName(); QFile file(name); file.open(QIODevice::ReadOnly); file.read(buffer, 100); QByteArray byte(buffer); qDebug() << byte.length() //qDebug() << byte.toHex(); return a.exec();}
在window下创建了一个a.txt文件,文件里面写的123,由windows资源管理器说明文件大小3字节,qDebug()<<byte.length()输出的结果是5字节,当把qDebug() << byte.toHex();注释取消后,打印qDebug()<<byte.length()是3字节。。。。。
果断泪奔了。。。
------解决方案--------------------
char buffer[100];
这个buffer没有初始化,内容是随机的,当你读文件的时候前三个字节是文件的内容,后面就是随机的东西,
加上 for(int i=0;i<100;i++) buffer[i] = 0; buffer内容初始化为0就没有问题了。