我正在尝试逐位读写二进制文件。我使用以下代码读取位:
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