Техническая информация по FCU.
Код:
Итак, как было сказано в начале, данный продукт являет собой, по
сути, lzhuf. Если кому-то интересно как построен его алгоритм, пусть
он обратится в F-Bit и попросит исходные тексты архиватора,
написанного Hurahiko Okumura и попробует в них разобраться. Я знаю
лишь как работает lz. Есть, в принципе, из той же серии архиватор
lzarm, который тоже основан на lz, но архивирует лучше. Я побоялся
его адаптировать, хотя он был бы и короче, потому, что он работал бы
он раза в два медленнее, а выгадывал бы не более 5%. Вполне возможно,
что я напишу и его, но это будет уже другой архиватор. Кроме того,
алгоритм, реализованный здесь, имеет два неоценимых качества: он
достаточно быстр и архивирует лучше чем PACK, LZSS и ARC. Других
архиваторов у меня нет и с ними сравнить я не могу. В сравнении с ARJ
на убогой машине фирмы IBM (один ВЭ ЭМ ЭР ЭС) он проигрывает
где-то 3% при архивации, но зато, он может работать в 56 Кб памяти!!!
В архиве имеется каталог файлов, которые в нем есть. Этот каталог
"размазан" по всему архиву. Перед началом файла в архиве имеется
заголовок из 7 слов: 3 слова имени (в коде RADIX-50), изначальная
длина файла в блоках, системная дата (старший бит даты означает
что файл был защищенным и при разархивации он защищается от удаления)
далее следуют два слова, которые имеют смысл длины файла в архиве
(с точностью до слова). В младшем байте первого слова хранится
количество слов, старший байт имеет специальный вид это служит ключом
того, что это заголовок. И последнее, 7-е слово содержит число бло-
ков, которое файл занимает в архиве. Два последних слова заголовка
имеют важное значение т.к. во время разархивации именно на них
делается основной опор. Если эти слова испочены, то восстановит файл
из архива становится невозможным, поэтому предусмотрен ключ /.,
котоный в режиме List выводит содержимое этих двух слов. Если Вы
хотите обезопасить свой архив,- после архивации сохраните значения
этих слов в каталоге архива на диске и в случае необходимости Вы
сможете с помощью DESS'а восстановить их.
В след за заголовком архива расположен собственно архив. Он
заканчивается двумя специальными словами: первое из них - контрольная
сумма файла (исходного), второе - контрольная сумма файла в архиве.
Длина файла в архиве дается без учета этих двух слов.
Во время тестирования проверяется:
- Первые три слова. Они должны быть допустимы в радиксе. Если первое
слово имени файла ноль, архиватор считает это концом архива.
- Длина исходного файла. Она должна быть отлична от нуля.
- Ключефой байт в первом слове длины файла в архиве.
Если хотя бы одно из перечисленных условий не соблюдено выводится
сообщение Format archive error. Также проверяется контрольная сумма
файла в архиве.
При разархивации проверяется контрольная сумма исходного файла.
Параметры сжатия из кода:
Код:
NIL = -2
F = 60.
;~~~~~~~~~~~~~~~~~~~~~~~~~~~ Huffman coding ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
N = 4096.
N.char = <254.+F>
T = <N.char*2-1>
R = T-1
Max.fr = 100000
Контрольная сумма считается простым сложением слов.