我目前正在学校学习C ++,我们得到了将二进制文件转换为ASCII的任务。
我和我的朋友在此网站上找到了此代码。
#include <bitset>
#include <fstream>
int main()
{
std::ofstream fout("ASCII.txt");
std::ifstream fin("Binary.txt");
char ic;
std::bitset<8> oc;
int i = 8;
while (fin >> ic)
{
oc[--i] = ic - '0';
if (0 == i)
{
fout << static_cast<char>(oc.to_ulong());
i = 8;
}
}
return 0;
}
有空余时间的人可以详细解释一下这是什么意思吗? 我们确实了解“ fstream”以及他如何读取文件。 但是bitset有点模糊,我们找不到任何关于它如何工作的GOODGOOD教程,也找不到-for和-while循环期间发生的事情。 谢谢!
答案 0 :(得分:0)
该代码将打开两个文件:
打开ASCII.txt以便通过ofstream
类实例fout
Binary.txt已打开,可通过ifstream
类实例fin
bitset
只是一个位数组。 oc
是一个8位的位集,实际上是1个字节。
while循环如下进行:
fin >> ic
:从fin
(Binary.txt)中读取一个字符,然后复制到ic
中(大概是'0'
或{{1} }字符
'1'
:通过从字符{{的ascii值中减去),将上面阅读的ascii字符直接转换为ic - '0'
或ic
到0
中1}}。
1
递减'0'
,然后将oc[--i] =
或i
位打包到位置0
1
:在循环中的第8次迭代中,一个位集现在已满,并且是一个完整的字节。将其转换回整数,转换为“ char”,然后将字符写回到i
(ASCII.txt)。这句话有很多事情要做。
循环继续进行,直到没有更多字节可以从fout << static_cast<char>(oc.to_ulong());
(Binary.txt)中读取