如何将 LZW 压缩文本写入 C 中的文件?

问题描述

嗨,我用 C 语言做了一个简单的 LZW 压缩器,但我找不到任何关于如何将压缩值写入文件的信息。

例如我压缩了一个txt文件,它是“banana bandana”,输出代码是:

98 97 110 257 97 32 256 110 100 259

我应该如何将其写入新文件?我需要用C重新读取并解压。

解决方法

我想是的,您应该将压缩数据写入另一个文件,例如“banana.lzx”。

这里是如何将压缩数据写入文件:

#include <stdlib.h>
int compressed_data[10] = {98,97,110,257,32,256,100,259};
FILE * fp = fopen("banana.lzx","w");
fwrite(compressed_data,sizeof(compressed_data[0]),sizeof(compressed_data),fp);
fclose(fp);

这里是如何从文件中读取压缩数据:

#include <stdlib.h>
int compressed_data[10] = {0};
FILE * fp = fopen("banana.lzx","r");
fread(compressed_data,fp);
fclose(fp);
/* compressed_data is retrieved,and can now be decompressed */

备注: 我对 LZW 压缩一无所知,但压缩数据不应该是一组字节吗?如果是这样,为什么您得到的值高于 255(参见 257256259)?