Написал метод, который по идее должен обрабатывать блоки, запакованные GZip
Беда в том, что на выходе я получаю пустой массив байт. Где ошибка в этом коде?
private void DecompressionBlock(object x)
{
int i = (int)x;
int _DecompressSize = BitConverter.ToInt32(iDecompressSize[i], 0);
int _CompressSize = BitConverter.ToInt32(iCompressSize[i], 0);
Console.WriteLine("{0}", _DecompressSize); //1024
Console.WriteLine("{0}", _CompressSize); //732
Console.WriteLine("{0}", firstBuff[i].Length); //732
secondBuff[i] = new byte[_DecompressSize];
using (MemoryStream output = new MemoryStream())
{
using (GZipStream ds = new GZipStream(output, CompressionMode.Decompress))
{
ds.Read(firstBuff[i], 0, _CompressSize);
}
secondBuff[i] = output.ToArray();
Console.WriteLine("{0}", secondBuff[i].Length); //0
}
}
Если написать:
using (MemoryStream output = new MemoryStream(secondBuff[i]))
Во время работы возникает исключение, и ругань на "магическое число" GZip
В компрессоре я отдельно запаковывал каждый массив байтов GZip-ом, и добавлял на стадии записи в фал перед ним блоки с размерами, при чтении я эти данные читаю, и записываю в массив целый не тронутый никем блок для того же gZip.
Может я что-то упустил из виду?
Вот метод компрессии:
private void CompressionBlock(object x)
{
int i = (int)x;
using (MemoryStream output = new MemoryStream())
{
long _outLength;
using (GZipStream cs = new GZipStream(output, CompressionMode.Compress))
{
cs.Write(firstBuff[i], 0, firstBuff[i].Length);
_outLength = output.Length;
}
secondBuff[i] = new byte[_outLength];
secondBuff[i] = output.ToArray();
// Запишем размер сжатого блока
int _sizeBlock = secondBuff[i].Length;
Console.WriteLine("Размер сжатого блока - {0}", _sizeBlock);
iCompressSize[i] = new byte[4];
iCompressSize[i] = BitConverter.GetBytes(_sizeBlock);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть переменная типа double d = 15997, подскажите пожалуйста, как вывести три знака после запятой не округляя его? Пробовал Console
Добрый деньПрошу Вашей помощи в следующем вопросе: Есть выпадающий список, который я получаю в результате выборки из БД SQL
Синтаксис array_rand, гласит: array_rand ( array input [, int num_req] ), где num_req - количество выбираемых значений
Здравствуйте, внутри класса есть задание конфига: