了解其工作原理
Understanding how this works
我目前正在学校学习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"以及他如何读取文件。 但是位集有点模糊,我们找不到任何关于它如何工作的 GOODGOOD 教程,以及在 -for 和 -while 循环期间会发生什么。 谢谢!
代码打开两个文件:
ASCII.txt 通过ofstream
类实例打开以进行写入,fout
二进制.txt 通过ifstream
类实例打开以供读取,fin
bitset
只是一个位数组。oc
是 8 位的位集,实际上是 1 个字节。
while 循环按如下方式进行:
-
fin >> ic
:从fin
(二进制.txt(中读取一个字符并复制到ic
(大概这是一个'0'
或'1'
字符。 -
ic - '0'
:通过减去字符'0'
的 ascii 值,将上面读取的 ascii 字符直接转换为0
ic
或1
的数字。 -
oc[--i] =
递减i
,然后将0
或1
位打包到位组的位置i
-
fout << static_cast<char>(oc.to_ulong());
:每 8 次循环迭代一次,一个位集现在已满,是一个完整的字节。将其转换回整数,转换为"char"并将字符写回fout
(ASCII.txt(。这句话中有很多内容。 -
循环继续,直到没有更多的字节要从
fin
读取(二进制.txt(
相关文章:
- 了解其工作原理
- 尝试打印出 *ptr++ 的值,以了解它是如何工作的
- 用于了解输入和输出流缓冲区实际工作方式的程序
- 无法让我了解 cin.get 和 cout 在这里的工作方式
- 不了解C 集合的工作方式
- 我试着了解方法覆盖是如何工作的,不知道为什么输出 2
- 了解 declval 在copy_assignment情况下的工作方式
- 了解文件页在技术级别的工作方式
- 我试图了解 fork() 函数序列是如何工作的?
- 非CS人员需要了解线程是如何工作的,因为它与多核处理器有关
- std::了解它是如何工作的?运算符==
- 了解 std::线程语义,其中工作器函数作为类成员
- 了解指针和'new'如何工作的问题
- 了解函数特征模板的工作原理.特别是,指向成员函数的指针是怎么处理的
- 了解编译器的工作原理
- 了解内存分配的工作原理(LLVM)
- 我不认为我了解生成文件的工作原理
- 对我的代码如何工作感到困惑,并想了解其中的逻辑
- 我有一个问题,了解如何与队列工作
- 了解引用变量的工作方式