【发布时间】:2021-03-12 16:20:00
【问题描述】:
我已经在 C++ 中实现了 Huffman 编码算法,并且运行良好。我想创建一个文本压缩算法。
数字世界中每个文件或数据的背后,都有 0/1。
我想将 Huffman 编码算法生成的位序列(0/1)保留在文件中。
我的目标是保存要存储的文件中使用的位数。我将用于解码的元数据存储在单独的文件中。我想将数据逐位写入文件,然后在 C++ 中逐位读取。
二进制模式遇到的问题是它不允许我一点一点地放置数据。 我想将“10101”逐位放入文件中,但它一次放入每个字符的 asci 值或 8 位。
代码
#include "iostream"
#include "fstream"
using namespace std;
int main(){
ofstream f;
f.open("./one.bin", ios::out | ios::binary);
f<<"10101";
f.close();
return 0;
}
输出
感谢任何帮助或指向帮助的指针。谢谢。
【问题讨论】:
-
文件(流)至少在字节级别上工作。没有办法将单个位放入文件中。您必须以字节为单位收集位并写入后者。
-
@Scheff 所以我需要制作一个 8 位的缓冲区然后处理它们?
-
8 位缓冲区?你的意思是一个字节。
char或unsigned char? -
您必须编写自己的机制来写入字节(这很容易),但您可以写入文件的最小时间是一次一个字节。
-
对于开发,如果您不介意文件空间的浪费,您可能会发现读取/写入
'0'和'1'字符而不是执行逐字节缓冲。
标签: c++ character-encoding bit huffman-code read-write