我读了一个二进制文件(文件可以是任何东西......比如jpg或任何类型的二进制文件甚至文本文件)一点一滴。如何用这些位获得相同的文件?
答案 0 :(得分:1)
考虑到你的问题有多广泛,我只是在暗中捅。假设您逐字节读取文件,然后将每个字节转换为位字符串,您可以使用以下函数来反转:
string readBitString(ifstream &stream)
{
stringstream input;
char c;
while (stream.get(c))
{
for(int i = 7; i >= 0; i--)
{
input << ((c >> i) & 1);
}
}
return input.str();
}
void writeBitString(ofstream &stream, string input)
{
stringstream inputStream(input);
char bits[9];
char c;
while(inputStream.get(bits, 9))
{
for(int i = 7; i >= 0; i--)
{
if(bits[7-i] == '1')
{
c |= 1 << i;
}
else
{
c &= ~(1 << i);
}
}
stream << c;
}
}
int main ()
{
ifstream in("test.bin", ios::binary | ios::in);
ofstream out("test-out.bin", ios::binary | ios::out);
string input = readBitString(in);
in.close();
writeBitString(out, input);
out.close();
return 0;
}