Avatar billede postbil Nybegynder
23. april 2015 - 21:40 Der er 2 kommentarer og
1 løsning

ZLIB komprimering af integer

Hej Eksperter.
Jeg arbejder på et projekt hvor jeg ønsker at komprimere en række integer værdier med ZLIB. Jeg har  skrevet følgende kode:

public static byte[] Deflate(int value)
        {
            byte[] temp  = BitConverter.GetBytes(value);
            using(var ms = new System.IO.MemoryStream())
            {
                using(var compressor = new Ionic.Zlib.ZlibStream(ms, CompressionMode.Compress, CompressionLevel.Default ))
                {
                    compressor.Write(temp, 0 , temp.Length);
                }
                return ms.ToArray();
            }

        }

Mit problem er at mine talværdier ikke kommer til at fylde mindre ved denne komprimering.
Resultatet af denne komprimering: 0x789CFB5FCFC00000057D017F hvor i mod hvis jeg uden at komprimere min integer bare konverter den fylder den kun: 0xFF7F0000.

Kan i se hvad jeg gør galt??

Hilsen Mik
Avatar billede erikjacobsen Ekspert
23. april 2015 - 22:34 #1
Du kan aldrig opnå en besparelse ved at komprimere een integer. Den "komprimerede" bit skal nødvendigvis indeholde en header, der fortæller at indholdet er komprimeret, med hvilken algoritme, og hvilke komprimeringstabeller, så det kan afkomprimeres igen.

Og headeren er også nødvendig hvis der faktisk ikke komprimeres, fordi det ikke kan betale sig.

Men sætter du en pæn flok integers efter hinanden, og komprimerer dem på een gang, kan du sikkert opnå noget.
Avatar billede postbil Nybegynder
23. april 2015 - 22:47 #2
Okay mange tak for hjælpen. Så giver det bredere mening!!

Tak for hjælpen!!
Avatar billede arne_v Ekspert
24. april 2015 - 02:52 #3
Og zip algoritmen virker ogsaa langt bedre paa lidt stoerre data, da den primaert udnytter naar data gentages.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester