了解其工作原理

时间:2018-10-09 08:58:15

标签: c++ binary ascii

我目前正在学校学习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循环期间发生的事情。 谢谢!

1 个答案:

答案 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'ic0中1}}。

  • 1递减'0',然后将oc[--i] =i位打包到位置0

  • 1:在循环中的第8次迭代中,一个位集现在已满,并且是一个完整的字节。将其转换回整数,转换为“ char”,然后将字符写回到i(ASCII.txt)。这句话有很多事情要做。

  • 循环继续进行,直到没有更多字节可以从fout << static_cast<char>(oc.to_ulong());(Binary.txt)中读取