开发者

Compression Array of Bytes

My problem is: I want to store a 开发者_C百科array of bytes in compressed file, and then I want to read it with a good performance.

So I create a array of bytes then pass to a ZLIB algorithm then store it in the file. For my surprise the algorithm doesn't work well., probably because the array is a random sample. Using this approach, it will will be ber easy to read. Just copy the stream to memory, decompress them and copy it to a array of bytes.

But i need to compress the file. Do I have to use a algorithm, like RLE, for compresse the byte array? I think that I can store the byte array like a string and then compress it. But i think I am going to have a poor performance on reading data.

Sorry for my poor english.

Thanks


It's not clear whether you mean "random sample" in the statistical sense (a sample of real data chosen at random), or just randomly generated data. The first should compress fine.

However, truly random data can not be compressed (well). In fact, compressibility is one of the measures of randomness.


If the data is random, it will have a high entropy. There is no algorithm that can compress such data with much success. That is, since it's random, you might get lucky on a specific case, but generally it's useless to try to compress it.


Are you sure that you really need to compress random data? Best compression can be achieved if you know what is source of data and some other specifications that can be used to choose and optimize compression algorithms. First how big your arrays are? If this are values of characters there is difference in frequency of each letter. If this array is sorted or it has unique values this can be also used to optimize space. So what is the source of your data?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜