0 / 0 / 0
Регистрация: 31.10.2014
Сообщений: 26
1

C#, алгоритм архивации

08.12.2014, 17:50. Показов 2215. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.
Нуждаюсь в Вашем совете. У меня есть строка (string s) длиною меньше 160 символов. Я ее шифрую и получаю на выходе другую строку. Затем мне нужно ее архивировать для того, чтобы она занимала меньше места. Я смотрел в интернете, но нашел способы лишь через отправки этой строки в болкнот, а затем в архивацию, но это не подойдет, ибо процесс будет проходить в телефоне(WP8.1). Расскажите мне пожалуйста какую библиотеку и алгорит мне использовать.
Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2014, 17:50
Ответы с готовыми решениями:

Это алгоритм архивации LZW?
public static List<int> Compress(string uncompressed) { Dictionary<string,...

Алгоритм архивации Лемпеля-Зива
Может есть у кого нибудь исходник, на любом языке, или кто может книгу подскажет где про это...

Потеря нулевых байт при архивации (алгоритм Хаффмана)
Неправильно архивирует pdf файлы Как мне сказали вся ошибка в функции BuildTable "Вместо...

Система архивации windows server не создаёт расписание архивации
стоит windows 2008 r2 создаю "расписание архивации" и на последнем шаге вылазит ошибка "имя...

15
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
08.12.2014, 18:14 2
как вариант юзай библиотеку Ionic.Zip
0
0 / 0 / 0
Регистрация: 31.10.2014
Сообщений: 26
08.12.2014, 19:05  [ТС] 3
агерон, Я уже подключил ее, но в методах нашел только способ через файл(блокнот txt), но мне нужно, чтобы он еодировал именно строку и ответ выдавал тоже именно строкой. Алгоритм вообщем нужен)
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
08.12.2014, 20:12 4
NursV,
Возьмите один из LZ методов и закодируйте его
1
0 / 0 / 0
Регистрация: 31.10.2014
Сообщений: 26
08.12.2014, 21:49  [ТС] 5
XRoy, подробнее пожалуйста - если можно. Я не знаю, что такое LZ)
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
08.12.2014, 22:32 6
NursV,
Алгоритмы, возьмите к примеру LZ77 или LZ78

Добавлено через 12 секунд
NursV,
Алгоритмы, возьмите к примеру LZ77 или LZ78
0
0 / 0 / 0
Регистрация: 31.10.2014
Сообщений: 26
08.12.2014, 22:42  [ТС] 7
XRoy, большое спасибо! Возникает вопрос: мне придется писать алгоритм самому или есть какая то библиотека, которая сделает это за меня?
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
09.12.2014, 00:01 8
Лучший ответ Сообщение было отмечено NursV как решение

Решение

NursV,
Вот к примеру есть библиотека LZW
1
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
10.12.2014, 10:29 9
ох мучаете вы человека зачем рассписывать гемор с самостоятельным LZW если мы пришли к тому же откуда и начали - "возьми вот эту библиотеку"? Я конечно надеялся что человек умеет гуглить и по словам Ionic.Zip решит проблему ну а так как этот навык у него отсутствует то немного помогу
C#
1
2
3
4
5
6
7
8
9
byte[] data = MethodThatReceivesYourDataOverTheNet();
using (MemoryStream stream = new MemoryStream(data))
{
    using (ZipFile zip = new ZipFile())
    {
        zip.AddEntry("name_of_the_file_in_the_arhive.bin", "base", stream);
        zip.Save("example.zip");
    }
}
0
0 / 0 / 0
Регистрация: 31.10.2014
Сообщений: 26
10.12.2014, 23:33  [ТС] 10
агерон, вся фишка, что нет файла, а есть только строка. String s; всё. Нужно ее архивировать, не сохраняя в фаил
0
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
11.12.2014, 18:08 11
эххх студент..... держи код с использованием Ionic.Zip
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using System.IO;
using System.Text;
using Ionic.Zip;
 
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            var random = new Random(28);
            var data = new byte[65555];
            for (var i = 0; i < 65555; i++)
                data[i] = Convert.ToByte(random.Next(65, 65 + 28));
            var primaryData = Encoding.ASCII.GetString(data);
            byte[] dataResult = null;
            var binaryPrimaryData = Encoding.UTF8.GetBytes(primaryData);
            using (var dataStream = new MemoryStream(binaryPrimaryData))
            using (var result = new MemoryStream())
            {
                using (var zipStream = new ZipOutputStream(result))
                {
                    var entry = zipStream.PutNextEntry("data");
                    var buffer = new byte[1024];
                    var readCountBytes = 0;
                    do
                    {
                        readCountBytes = dataStream.Read(buffer, 0, 1024);
                        zipStream.Write(buffer, 0, readCountBytes);
                    } while (readCountBytes > 0);
                }
               dataResult = result.ToArray();
            }
        }
    }
}
1
0 / 0 / 0
Регистрация: 31.10.2014
Сообщений: 26
11.12.2014, 18:25  [ТС] 12
агерон, Большое спасибо, но выдаёт:
Ошибка 1 Не удалось найти имя типа или пространства имен "ZipOutputStream" (пропущена директива using или ссылка на сборку?)
0
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
11.12.2014, 18:28 13
пoдключи через Nuget DotNetZip
0
0 / 0 / 0
Регистрация: 31.10.2014
Сообщений: 26
11.12.2014, 18:33  [ТС] 14
агерон, я, конечно, чувствую себя идиотом, но где тут входная строка?) и где выходная? Или Объясни пожалуйста чучуть подробнее. Запустить удалось, спасибо.
0
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
11.12.2014, 19:00 15
входная строка - primaryData, генериться рандомно
dataResult - выходной массив байт
1
0 / 0 / 0
Регистрация: 31.10.2014
Сообщений: 26
11.02.2015, 13:31  [ТС] 16
агерон, спасибо тебе большое!
0
11.02.2015, 13:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2015, 13:31
Помогаю со студенческими работами здесь

Ошибка "планирование архивации могут только администраторы и операторы архива" при архивации
Здравствуйте! При попытке создать эжедневное копирование через &quot;Систему архивации Windows&quot;...

Вопрос по архивации
доброго времени суток.. сразу прошу прощения если не в эту тему написал. у меня каждое воскресенье...

Ошибка Архивации Windows 7
Помогите не могу настроить резервное копирование из-за ошибки: не удалось запустить приложение...

Ошибка при архивации
Привет, на внешний HDD есть папки с фото, при создание архивов некоторых папок получаю ошибку ,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru