Nano Hash - криптовалюты, майнинг, программирование

DeflateStream CopyTo MemoryStream

Устали сжимать и распаковывать MemoryStream, но кажется, что CopyTo работает не так, как ожидалось? Почему? Как это исправить?

public static MemoryStream Compress(MemoryStream originalStream)
{
    Console.WriteLine("Original before compressing size: {0}", originalStream.Length.ToString());
    MemoryStream compressedMemoryStream = new MemoryStream();

    using (DeflateStream deflateStream = new DeflateStream(compressedMemoryStream, CompressionMode.Compress, true))
    {
        originalStream.CopyTo(deflateStream);
    }
    Console.WriteLine("Compressed size: {0}", compressedMemoryStream.Length.ToString());
    return compressedMemoryStream;
}

public static void Decompress(MemoryStream compressedStream)
{
    Console.WriteLine("Compressed before decompressing size: {0}", compressedStream.Length.ToString());
    using (MemoryStream decompressedFileStream = new MemoryStream())
    {
         using (DeflateStream decompressionStream = new DeflateStream(compressedStream, CompressionMode.Decompress, true))
         {
              decompressionStream.CopyTo(decompressedFileStream);
         }
         Console.WriteLine("Decompressed size: {0}", decompressedFileStream.Length.ToString());
    }
}

Выход:

Original before compressing size: 5184054
Compressed size: 0
Compressed before decompressing size: 0
Decompressed size: 0
01.07.2018

  • Убедитесь, что ваш originalStream находится в Position = 0, прежде чем вы начнете копировать из него. В противном случае он не найдет, что копировать, находясь в конце потока (раз уж вы до этого записывали в него данные?). 01.07.2018
  • @RayKoopa, да, ты прав! Напишите ответ, я приму его! 01.07.2018
  • @ A191919 и не забудьте переместить новый MemoryStream compressedMemoryStream в Position = 0 в конце 01.07.2018

Ответы:


1

CopyTo начинает копирование байтов из текущей позиции исходного потока.

Поскольку вы опубликовали результирующий размер сжатого потока, равный 0, я почти уверен, что originalStream расположен в конце потока, поэтому байты не были скопированы/сжаты.

Убедитесь, что позиция 0, чтобы он мог найти любые данные для копирования и сжатия в ваш поток.

Как уже упоминал @xanatos, то же самое относится и к Decompress, поэтому убедитесь, что compressedStream также расположен в 0, прежде чем распаковывать его.

01.07.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..