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. :(