排列中的高效存储二进制数据

时间:2018-02-08 17:03:25

标签: encoding data-transfer steganography

我正在寻找一种在传输时按字典顺序存储数据的方法。 由于字典的顺序无关紧要,因此它提供了一个存储可能被忽视的数据的理想位置。

出于这个目的,它是一本字典并不重要,所以我将它建模为一个列表。

我有一个大小为3的列表,其值为A,B,C和D.

我可以存储的理想数据量为log2(n!) where n=4,为4.58 ...所以4位。

有许多简单方法可以存储可以存储的n-1位,例如n-1效率的简单方法:

I have the same list as above, A..D.
I start with the first element
I place the next elements before or after it - each referring to a 1 or a 0.
For example:
     000 -> DCBA
     001 -> CBAD
     010 -> DBAC
     100 -> BACD

对此有一些优化会提供一些额外百分比的存储空间,但我想知道(如果可能的话)是否存在接近理论最大值的方法,或者至少提供一个显着的提高这种方法的效率。

对于更多上下文,我希望按HTTP请求头字段的顺序存储数据。

如果可能的话,我正在寻找一种算法,而不是一段代码。

1 个答案:

答案 0 :(得分:0)

我通过使用quicksort样式算法来解决这个问题,但是不是将每个元素与数据库进行比较,而是使用“数据源”中的下一位。 由于我正在回答我自己的问题并且对这个问题没什么兴趣,我不会详细介绍,但如果被问到,我很乐意这么做。