压缩短数字串

时间:2013-03-14 15:36:01

标签: compression

有没有人知道非常短的数字/二进制字符串的压缩?

例如,我想压缩任何数字(0-9)或二进制,即3,2,6,4

我想压缩2,1,3,6,1,4,13

的数字或二进制数

申请选择4和euromillions研究。

1 个答案:

答案 0 :(得分:0)

我查看了EuroMillions和Pick 4.我看到前者的范围是1-50,后者是0-9。我认为我们可以假设任何数字都是同样可能的(某些压缩方案利用了某些数字比其他数字更可能发生的事实)。

你在编码什么平台?像Python或JavaScript这样的高级语言?还是像C或C ++这样的低级语言?你希望存储大量的数字序列吗?或者你只是想提出一个有效的内存表示?

如果你想在内存中使用大型集合,你可以做出的最合理的权衡是确保每个字符的表示不超过1个字节(可以保存0-255之间的值)。在较高级别的语言中可能更难做到,这些语言通常只有“数字”类型而没有更精细的粒度。但是C / C ++甚至Java应该允许你这样做。

如果您想在光盘上存储大量这些同等可能的数字,请查看存储数字所需的最小位数。对于EuroMillions,您需要6位来存储数字(2 ^ 6 = 64)。然后将它们存储在比特流中,以便为每个数字节省2位。使用Pick 4,您可以在一个字节中编码2个数字。