首页 > 解决方案 > 以二进制形式读取文件,将其压缩并以二进制形式写回

问题描述

我们被分配在 C++ 中实现 Shannon Fano 压缩算法。虽然算法不是什么大问题,但我在将给定文件(txt、excel、BMP)作为二进制文件读取以进行压缩时遇到了一些麻烦。

教授。给了我们一些提示,但我不明白它们应该如何使用。他说我们应该制作一个包含文件路径的对象。然后它具有从二进制文件读取位、读取字节、读取整数和读取浮点数的方法。虽然我知道 readBin 和 readByte 做了什么,但我不明白如何使用 readInt 或 readFloat 方法(fstream 如何知道下一个 char 是 int 或 float)。

有没有人知道如何使用我上面列出的方法实现二进制读取?谢谢!

标签: c++algorithmfilereader

解决方案


除非您需要考虑不同文件(BMP、XLSX 等)的内部格式以提高压缩率,否则对于您的用例,我认为没有任何特别的理由将它们视为二进制流:一堆应用压缩算法的字节数。

我建议你看看这个答案,你有一个关于如何在 C++ 中读取二进制文件的非常简单的例子:https ://stackoverflow.com/a/16435334/9390121

在内存中读取文件后,只需将其压缩并将其写回磁盘(即,write()而不是read())。


推荐阅读