我正在使用一个静态字典文件,其中包含一些单词和值。此值的大小不固定,例如the
为1
,love
为01
,kill
为101
等。当我尝试压缩一组单词,如果该单词存在值,我会遍历每个单词并查找字典。如果存在,我用值更改单词,如果它不存在,我将单词编码为字节。压缩后我得到了一大块的比特,因为这些字典值和未压缩的单词不是固定大小的,所以我不能对这些位进行分组并对它们进行解码。
我考虑过为每组位使用1位标志来确定它是压缩的还是未压缩的,但由于码字或常规字的未知长度,我无法检测到标志位。
如果我使用1字节分隔符,它仍然有问题。假设我的分隔符是00000000
,在分隔符之前我有100
,在分隔符之后我有001
,所以我们有10000000000001
,我怎么知道哪个这些位的组是我的分隔符?
我可以使用其他方法对这些压缩/未压缩位进行分组以对其进行解码吗?谢谢。
答案 0 :(得分:0)
首先,您打算部署哪种语言和系统?许多语言都提供了自己的压缩库和工具,可以满足您的需求,而不会产生重大的低级设计效果。
这里的答案是建立一些更严格的簿记和文件格式,以便能够撤消压缩。大多数压缩系统的文件格式都有一些开销,这就是为什么当你压缩两次时,你不一定要保存任何东西,实际上可以增加文件的大小。
文件通常利用文件开头的标头来提供关键信息。这将是定义压缩文件特定的任何规则的好地方。