Biblioteka zlib i dekompresja streamu

0

Witam,

mam do rozpakowania stream w postaci pakietu:

           

            string str = "0018f35fcfee00179adbf...";
            string hex = str; 
            byte[] bytes = new byte[hex.Length / 2];
            for (int i = 0; i < bytes.Length; i++)
            {
            bytes[i] = Byte.Parse(hex.Substring(2 * i, 2), NumberStyles.HexNumber);
            }

            byte[] inData = bytes;
            byte[] b1 = new byte[inData.Length];
            byte[] b2 = new byte[inData.Length];
            MemoryStream inStream = new MemoryStream(inData);
            MemoryStream outStream = new MemoryStream();

        

            ZInputStream  inZStream  = new ZInputStream(inStream, zlibConst.Z_DEFAULT_COMPRESSION);
            ZOutputStream outZStream = new ZOutputStream(outStream, zlibConst.Z_DEFAULT_COMPRESSION);
            

            inZStream.Read(b1, 0,b1.Length);

jednak nie mam pojęcia dlaczego w b1 są ZAWSZE same zera. Próbowałem robić to na 5 różnych sposobów i dalej nie działa. Pogubiłem się.

Proszę o pomoc!

Pozdrawiam
Tilosag

EDIT:

Ulepszyłem kod, żeby był bardziej czytelny:

        static void Main(string[] args)
        {
            string input = "0018f35fcfee00179ad...";
            //input to pakiet (w hexach) do dekompresji Zlib

            string output = Decompress(input);

            Console.WriteLine("Input: " + input+"\n\n");
            Console.WriteLine("Output: "+ output);
            Console.ReadKey();
        }

        private static string Decompress(string input)
        {
            

            //input(hex)->tablica bajtów
            byte[] inData = new byte[input.Length / 2];//zał.: input ma parzystą liczbę znaków
            for (int i = 0; i < inData.Length; i++)
            {
                inData[i] = Byte.Parse(input.Substring(2 * i, 2), NumberStyles.HexNumber);
            }
            //////

            byte[] outData = new byte[inData.Length];

            MemoryStream inStream = new MemoryStream(inData);
            ZInputStream inZStream = new ZInputStream(inStream,zlibConst.Z_DEFAULT_COMPRESSION);
            inZStream.read(outData, 0, inData.Length); //jeżeli tu użyje się Read() zamiast read() to zwraca się cały input w DEC

            //zamiana tablicy bajtów outData na string
            string output = "";
            foreach (byte b in outData)
            {
                output = output + b.ToString();
            }         
            //////

            return output; //dlaczego ret zwraca zawsze 120 i 156? dlaczego nic innego nie jest nigdy zwracane?
        }

Cały mankament polega na tym, że zawsze zwracane jest 120 i 156 a nie zdekompresowany string. :(

0
<refresh>
0

poradziles sobie?
jesli nie, to czy ow string input = "0018f35fcfee00179ad..."; probowales otworzyc czymkolwiek innym, np. 7zipem? archiwum jest poprawne? probowales ze swiezo przepakowanego pliku?
czemu w decompress masz zalozenie, ze outdata bedzie rowny dlugosci indata? skoro to jest zipstream, sadzilbym ze bedzie przynajmniej troche wiekszy. sprawdzales dlugosc oryginalna z tym co inzstream twierdzi?

a tak zerkajac na hexy, 0018f35fcfee00179ad wyglada dziwacznie, powiem Ci szczerze, ze nie wiem czy nie pomieszalem bibliotek, ale zlib co prawda nie ma magicznego zipowskeigo PK na poczatku, ale tez posiada sygnaturki. 00/18 ani 18/f3 NIE przypomina niczego co ja bym widzial, a sadzac z listy:
http://www.groupsrv.com/science/about474488.html
to calkiem nie pasuje:/

1 użytkowników online, w tym zalogowanych: 0, gości: 1