|
|
|
Как написать простейший архиватор?29.07.2010, 18:54. Показов 54206. Ответов 45
Метки нет (Все метки)
Необходимо написать программу -архиватор, степень сжатия неважна, лишь бы работало. Ничего интересного и понятного в интернете не нашел, на форуме тоже. Может у кого нибудь есть простой и понятный исходник архиватора, или подскажите что и где почитать, пжл.
0
|
|
| 29.07.2010, 18:54 | |
|
Ответы с готовыми решениями:
45
Как написать простейший калькулятор Написать простейший текстовый редактор (есть код на Delphi) Как написать свой простейший архиватор |
|
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
|
|
| 06.08.2010, 17:56 | |
|
0
|
|
|
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
|
| 06.08.2010, 18:17 | |
|
Black Fregat, Хаффман лёгок в понимании... а вот в написании главное не запутаться при построении дерева (переписывать указатели на структуры соседних ветвей).
Когда учился в университете - пробовал реализовать этот метод без построения дерева ... Но тогда силёнок малость не хватило ... Удалил, начал с нуля ... со структурами дело пошло быстрее. Я веду к тому, что если писать самостоятельно, то алгоритм очень интересный, в ходе написания можно узнать много нового.
0
|
|
|
|
|
| 06.08.2010, 20:25 [ТС] | |
|
Black Fregat нет обвинять не буду, просто насчет гугла я специально пояснил в шапке а Вы меня все равно упрекли в этом)
теорию кодирования по Хаффману уже прочитал, не хочется больше голову ломать и читать другие MikeSoft это Вы использовали код который дан здесь Исходник алгоритма Хаффмана на C ?
0
|
|
|
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
|
| 06.08.2010, 20:34 | |
|
[XandeR], нет, использовал свои работы ...
Не используйте то, что написали другие, если вы хотите разобраться в теме. Попробуйте начать писать с нуля ... идеей и исправлениями мы, если что, поделимся...
0
|
|
|
|
|
| 13.08.2010, 16:10 [ТС] | |
|
совсем нет времени чтобы писать самому, я параллельно пишу программу для больницы взамен их старой, досовской. сроки поджимают, а архиватор мне тож нужен, до сентября((
MikeSoft если не жалко дайте свой исходник пжл, буду очень благодарен
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
|
| 14.08.2010, 09:01 | |
|
У меня есть собственный архиватор и разархиватор *exe файлов. С исходниками. ТАм всё чисто и честно. ПОяснения тоже есть.
СОкращаются только последовательности из нолей. Могу дать. Но там DEV C++, вот какая штука... Добавлено через 3 минуты ...Такого рода пояснения там: //Теперь концепция сжатия файла. //Известно, там много ненужных нолей, идущих подряд, благодаря файлововому выравниванию //То есть ненужных нолей может быть и 20 и 30 и 500. //С ними надо разобраться и куда-то их убрать, что ли //Можно, конечно пройтись по заголовку файла, узнать количество секцций, их адреса и прочее и //Плясать исходя из этой информации. Но я лучше просто по сермяжному пройдусь фо файлу, находя //Последовательности нолей количеством, например 20 и более. //(Эта величина определена в макросе) //Все их зафиксирую, а потом уберу к //чёртовой матери а при разжатии всё это учту и добавлю
0
|
|
|
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
|
|
| 14.08.2010, 09:56 | |
|
kravam, и каков процент сжатия таким "методом"?
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
|
| 14.08.2010, 10:14 | |
|
Процент прямо скажу небольшой
Но, во-первых, у меня в макросе задано количество нолей в последовательости 9. То есть обрабатываются все последовательности из 9-ти или более нолей. Если будет последовательность из восьми нолей, то она не обработается. Можно это значение в макосе изменить и посмотреть, но мне лень Во-вторых, повторю, сжимаются только последовательности из нолей. Скажем, последовательносить из единиц сжата не будет какой бы длинной она не была А в-третьих я не собираюсь тут устраивать соревнование ни с винраром ни с кем бы то ни было. Мне важно было написать архиватор-разархиватор, в принципе я справился. Совершенстовать нет желания да и времени ибо щас пишу прогу за обсуждение которой здесь по головке нге погладят. А как подталкивание в нужном направлении мои исходники очень даже подойдут. Привет.
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
|
| 14.08.2010, 19:27 | |
|
IDE .....
0
|
|
|
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
|
|
| 14.08.2010, 19:35 | |
|
[XandeR], DEV C++ - это свободная среда разработки для C/C++.
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
|
| 14.08.2010, 19:39 | |
|
Щас подумал, что вряд ли мне удасться сделать последолвательость кодируемых символв меньше. Ведь принцип такой: имеем последовательность из девяти нолей:
0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 Я её заменяю ппоследовательностью из 8-ми байт, где первые 4, допустим, адрес последовательности, вторые 4- количество знаков. Потом в конец файла эти 8 байтов пихаю и при разархивировании использую, а нули просто убираю. Экономится 1 байт. Ну, а если 8 нолей будет, сами понимаете экономии никакой. Так что 9- предел. Как там делал Рошал, я не знаю. Тягаться с ним нет желания, скажу одно, у него тоже сжимаются именно последовательности- файл, где нет двух одинаковых символов, стоящих рядом, не сожмётся вообще
0
|
|
|
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
|
|
| 14.08.2010, 19:45 | |
|
kravam, вам тогда нужен RLE. Я именно его сейчас пытаюсь реализовать. Сам алгоритм легкий, только я вот что-то запутался в нем.
0
|
|
|
|
|||||||
| 15.08.2010, 14:36 [ТС] | |||||||
|
RLE действительно очень простой для понимания алгоритм, только вот как его применить к бинарным файлам, может подскажите? первое это мне нужно считать бинарный файл а потом каким то образом с ним оперировать т.е. получить доступ к каждому символу 1 или 0 т.е. Как вот это сделать незнаю(
Добавлено через 2 минуты а вобще представить бинарный файл в виде символов можно? .....
0
|
|||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
|
| 15.08.2010, 14:53 | |
|
Эх, батенька, чё Вы в дебри-то полезли? Рано Вам ещё архиваторы писать.
Бинарный файл в виде символов представить можно. Для этого необходимо скачать откуда-нибудь шестнадцатиричные редактор, например hiew, PEBrowsePro или простенький HexEdit. ОТкрываешь ЛЮБОЙ файлв одной из этих прог и пожалуйста, файл как он есть в виде байтов. Можно также выводить бинарный файл (в смысле не текстовый) в текстовый документ. Для этого надо написать небольшую программку. МОгу дать, но опять же под DEV C++ заточена Наконец, в виде нолей и единиц выводить файл также можно. Для этого либо ищешь соответсвующий редактор либло каждому байту ставишь в соответсвие последовательность из нолей и единиц, чё-то такое: 0X45= 01000101 Потом считываешь файл в строку, потом читаешь строку байт за байтом и вместо шестнадцатиричных значений выводишь ноли и единицы. В текстовый файл или на консоль. Только зачем тебе это- ума не приложу
0
|
|
|
|
|
| 15.08.2010, 15:14 [ТС] | |
|
ещё раз вопрос
"RLE действительно очень простой для понимания алгоритм, только вот как его применить к бинарным файлам, может подскажите?" Добавлено через 13 минут kravam а по поводу того что рано: если я незнаю структуру файлов и операции с двоичными данными то это не значит что мне рано туда лезть или вообще не стоит. Вы, например, знаете как создать DirectX окно нарисовать в нем куб и заставить его вращатся? Вот если бы Вы такой вот вопрос задали, то я думаю никто не стал бы считать что Вы не достаточно умны для этого. Конечно мне стоило бы почитать литературу на эту тему, но в данном случае просто нет не терпения не времени.
0
|
|
|
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
|
|
| 15.08.2010, 15:27 | |
|
Давайте не отходит от темы, господа.
0
|
|
|
|
|
| 19.08.2010, 23:03 [ТС] | |
|
ещё нужно...
0
|
|
| 19.08.2010, 23:03 | |
|
Помогаю со студенческими работами здесь
40
Как создать на Visual C++ Win 32 простейший Архиватор Простейший архиватор Как написать архиватор. Как написать свой архиватор Как написать простейший калькулятор? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|