【发布时间】:2015-11-12 22:26:12
【问题描述】:
我不确定问这个问题的最佳方式,所以让我从一个例子开始。
假设我有一个完整的可能项目列表(i1、i2、i3、i4、....i128)。我想要的是指定一个子列表(我们称之为列表 A),它指定列表中的项目,以及列表的顺序是什么。现在假设我想以尽可能小的方式对其进行编码。假设列表 A 如下:
i1, i2, i5, i20, i50, i80, i103, i121
如果我知道我的项目总是按顺序排列,那么我想我可以轻松地创建一个位数组,其中 1 表示项目存在,0 表示不存在。在我的示例中,我有 128 个可能的项目,因此我可以表示 16 个字节中存在的内容。所以列表 A 将是
1100100000000000000100.......
In Bytes: C8 00 10 00 00 00 40 00 .....
但是现在,我怎样才能以不再使用 8 个字节的方式来表达顺序?
我意识到对于这个例子,通过将每个项目分配给一个特定的值,然后将这些值按我想要的任何顺序排列,只按顺序对列表进行编码会更少的数据,但是如果我的列表大于 16 个项目,然后我会开始使用更多数据来对它们进行编码。
有没有更好的方法来解决这个问题,我没有想到?我希望我所说的有道理。如果我能澄清任何事情,请告诉我,并提前感谢您的帮助!
【问题讨论】:
标签: encoding compression binary-data huffman-code