各位大神好:
   我有一个二进制文件,使用Ultral Edit-32 (这个软件可以把二进制文件转换成unicode编码)打开这个文件,
头20个字符是"47 7F 41 1D 00 B2 F4 E2 00 10 C3 0D 0D 00 0D 5E 2D FE F5 EF"。
   现在我想用QDataStream读取这个二进制文件,最终也是想转换为unicode格式的字符。
   以下是我的代码:
第一种方法,将数据读到char数据数组中:
   QFile file(fileName);
    char pfile[100];
    int i = 0;
    if(!file.open(QFile::ReadOnly | QFile::Text))
    {
        QMessageBox::warning(this,tr("读取文件"),tr("无法读取文件 %1:\n%2.").arg(fileName).arg(file.errorString()));
        return false;
    }
    QDataStream in(&file);
    in.setVersion(QDataStream::Qt_4_7);
    in.readRawData(pfile,100);
    while(i<16)
    {
        qDebug("ch %x ",pfile);
        i++;
    }
第一种方法打印出来的结果是:47 7F 41 1D 00 B2 F4 E2 00 10 C3  00  5E 2D FE F5 EF 
第二种方法:将数据读到int变量中
    QFile file(fileName);
    int magic;
    if(!file.open(QFile::ReadOnly | QFile::Text))
    {
        QMessageBox::warning(this,tr("读取文件"),tr("无法读取文件 %1:\n%2.").arg(fileName).arg(file.errorString()));
        return false;
    }
    QDataStream in(&file);
    in.setVersion(QDataStream::Qt_4_7);
    in.setByteOrder(in.LittleEndian);
    in >> magic >> magic >> magic >> magic;
    qDebug("ch =0x%x,0x%x,0x%x,0x%x",(magic>>24)&0x000000ff,(magic>>16)&0x000000ff,(magic>>8)&0x000000ff,(magic>>0)&0x000000ff);
第二种方法打印出来的结果是:  10 C3  00 5E (OD被删除,后面的自动往前补)
     
    问题:当读到“OD”(换行格字符),这个字符就被自动跳过了。我使用了其他方法也一样,“OD”这个字符就是会被自动删除。
          为什么会这样子呢?望各位高手指教指教,或者有没有更好的方法可以读取二进制文件,多谢!
          (这里的字体设置和排版,我还真不知道怎么弄,不好意思!)