|
Вопрос # 5 812/ вопрос закрыт / |
|
Приветствую, уважаемые эксперты!
Требуется создать архиватор, который по алгоритму хафмана будет сжимать файл. Проблема в том, что я не знаю как это всё осуществить. как это всё засунуть в файл.
P.S. Вроде как то объяснил, но если что задавайте вопросы, отвечу.)
 |
Вопрос задал: serox (статус: Посетитель)
Вопрос отправлен: 12 декабря 2011, 22:20
Состояние вопроса: закрыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 14 декабря 2011, 17:00; участников в обсуждении: 3.
|
min@y™ (статус: Доктор наук), 13 декабря 2011, 08:23 [#1]:
Ну, любой алгоритм сжатия подразумевает наличие входного и выходного набора данных. Само сохранение в файл к сжатию никакого отношения не имеет.
В данном случае можно использовать TFileStream.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ерёмин А.А. (статус: *Администратор), 13 декабря 2011, 10:52 [#2]:
А Гуглом вам религия запрещает пользоваться? В сети полно исходников кодирования алгоритмом Хаффмана.
|
|
serox (статус: Посетитель), 14 декабря 2011, 13:39 [#3]:
Ерёмин А.А.
Нашел только один, ито в нем мне месяц сидеть разбираться... Легче и полезней самому написать...
А так возник вопрос, как перевести файл в бинарный код?
That will be, you and do not learn, if never will try! ^__^
|
|
min@y™ (статус: Доктор наук), 14 декабря 2011, 13:53 [#4]:
Цитата (serox):
А так возник вопрос, как перевести файл в бинарный код?
Уточни, что должно быть на выходе. А то, ведь, вся инфа в цифровой технике и так хранится в бинарном коде.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
serox (статус: Посетитель), 14 декабря 2011, 17:00 [#5]:
ну я предполагаю так сделать...
сначала делаем статистику
var
f: file;
b: byte;
q: real;
a: array [0..255] of integer;
i,FileS: integer;
begin
for i:=0 to 255 do
A[i]:=0;
if OpenDialog1.Execute then begin
Assignfile(f, OpenDialog1.FileName);
Reset(f,1);
FileS := FileSize(f);
while not eof(f) do begin
blockread(f, b, 1);
A[b]:=a[b]+1;
end;
For i := 0 to 255 do
ListBox1.Items.Append(IntToStr(i) + ' - ' + inttostr(a[i]) + ';~ ' + FloatToStr(A[i]/FileS));
end;
из этого после делаем словарь
и файл который надо сжать переводим по одному байту в двоичный код, после соединяем по 8 и засовываем уже в новый файл...
That will be, you and do not learn, if never will try! ^__^
|
27 мая 2013, 12:10: Вопрос закрыт (решение принял DNK): Всё заглохло
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|