0

我实现了一个 LZW 压缩器,它借助哈希函数将字符串编码为整数。我将编码字符串存储在一个文本文件中。现在我需要解压缩相同的代码。从文本文件中读取时,我很困惑如何区分两位整数和一位整数。

例如,我的字典是:

0  c 
1  bba
3  aa
5  ac
7  bb
8  aab
9  a
10 b

等等。

现在,假设我将字符串“aaabbbac”编码为“9 3 10 7 9 0”,该字符串作为 9310790 存储在文本文件中。如何在读取文件时区分 0、1 和 10?

4

1 回答 1

0

一些选项:

  • 以二进制格式而不是文本格式存储它们。这可能对阅读和写作有点挑战,但它可能值得学习。问题是如果您想使用文本编辑器可视化数字,但您可以找到一些工具来可视化二进制文件。假设每个整数 2 个字节(短类型),您的示例将是十六进制(不考虑字节序): 00 09 00 03 00 0a 00 07 00 09 00 00

  • 以每个数字的固定长度存储它们。示例: printf("%03d", number) 将始终创建 3 位数字。你的例子是:009003010007009000

  • 使用逗号或分号分隔符:9,3,10,7,9,0

于 2014-09-29T16:21:37.353 回答