-5
我讀了一個二進制文件(文件可以是任何東西,如jpg或任何類型的二進制文件,甚至文本文件)。如何讓這些文件返回相同的文件?如何寫入數據位以形成二進制文件?
我讀了一個二進制文件(文件可以是任何東西,如jpg或任何類型的二進制文件,甚至文本文件)。如何讓這些文件返回相同的文件?如何寫入數據位以形成二進制文件?
考慮到你的問題有多廣泛,我只是在黑暗中刺傷。假設你閱讀字節文件字節,然後轉換每個字節成位串,你可以使用下面的函數來扭轉這個:
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;
}
嗯,只是讀一遍,你做的第一時間的方式相同。 – 2014-10-18 06:34:14
*我一點一點地讀取二進制文件*。不,你沒有 – deviantfan 2014-10-18 06:56:47
你的意思是說「逐字節」,我想,而不是「一點一滴」,你也想在這裏實現什麼?當你說「如何用這些位獲得相同的文件?」時,你的意思是什麼? – parth6 2014-10-18 07:00:23