0

我正在尝试逐位读写二进制文件。我使用以下代码读取位:

this->infile.open(this->inFileAdd,ios::binary|ios::in|ios::ate);

    this->size=infile.tellg();

    infile.seekg (0, ios::beg);

    fileContent=new bitset<8>[size];
    char c;
    int i=0;
    while (infile.get(c))
    {
        for (int j = 0; j < 8; j++)
        {
            fileContent[i][j]=((c >> j) & 1);
        }
        i++;
    }
    infile.close();

我使用以下代码将相同的内容写入另一个文件:

string fsave="D:\\a.jpg";
    ofstream outfile;
    outfile.open(fsave,ios::binary|ios::out);
    for (int i=0;i<steg.size;i++) {
        char c;
        cout<<i<<")";
        for (int var = 0; var < 8; ++var) {
            c|= steg.fileContent[i][var] << var;
            cout<<steg.fileContent[i][var];
        }
        outfile.write(&c,sizeof(c));
        cout<<endl;
    }
    outfile.close();

但有趣的是,当我使用以下 Unix 命令比较源文件和目标文件时,它们并不相同:

cmp -l "001-Copy.jpg" "a.jpg" | wc -l
4

0 回答 0