Compression 如何识别压缩/未压缩位组?

Compression 如何识别压缩/未压缩位组?,compression,byte,bit,delimiter,Compression,Byte,Bit,Delimiter,我正在使用一个静态字典文件,其中包含一些单词和这些单词的值。这些值的大小不是固定的,例如the是1,love是01,kill是101等等。当我试图压缩一组单词时,我遍历每个单词并查找字典,看是否存在该单词的值。如果存在,我用值更改单词,如果不存在,我将单词编码为字节。在压缩之后,我得到了一块比特,因为这些字典值和未压缩的单词的大小不是固定的,所以我无法对比特进行分组和解码 我曾考虑过对每一组位使用1位标志来确定它是压缩的还是未压缩的,但我无法检测标志位,因为一个码字或常规字的长度未知 如果我使用

我正在使用一个静态字典文件,其中包含一些单词和这些单词的值。这些值的大小不是固定的,例如
the
1
love
01
kill
101
等等。当我试图压缩一组单词时,我遍历每个单词并查找字典,看是否存在该单词的值。如果存在,我用值更改单词,如果不存在,我将单词编码为字节。在压缩之后,我得到了一块比特,因为这些字典值和未压缩的单词的大小不是固定的,所以我无法对比特进行分组和解码

我曾考虑过对每一组位使用1位标志来确定它是压缩的还是未压缩的,但我无法检测标志位,因为一个码字或常规字的长度未知

如果我使用1字节分隔符,它仍然有问题。假设我的定界符是
00000000
,在定界符之前我有
100
,在定界符之后我有
001
,那么我们有
100000000001
,我怎么知道这组位是我的定界符呢?
我可以使用其他方法对这些压缩/未压缩位进行分组以解码吗?谢谢。

首先,您打算部署什么语言和系统?许多语言都提供了自己的压缩库和工具,可以满足您的需要,而无需大量的低级设计工作

这里的答案是建立更严格的簿记和文件格式,以便能够撤消压缩。大多数压缩系统在其文件格式中都有一定的开销,这就是为什么当您将某个文件压缩两次时,您不必保存任何内容,并且实际上可以增加文件的大小

文件通常利用文件开头的头来提供关键信息。这将是定义特定于压缩文件的任何规则的好地方

  • 创建仅在码字之间使用的固定大小分隔符。这可以在分析文件之后,但在实际写出压缩数据之前确定
  • 如果生成分隔符而不是固定的已知值,请将其作为标题项之一
  • 将标题保持为简单的ascii格式,以便使用标准工具(如sscanf和fscanf)轻松提取
  • 如果您想要有一个可以包含额外信息的头,您可能需要一种一致的方式来告诉头的结束和数据的开始。包括一些具有“ENDHEADER”效果的内容应该足够了,并且仍然很容易识别

  • 我应该为一个特定的项目开发这个,所以我不能使用任何库或工具。关于固定尺寸测力仪的问题在最后一段。