сжать - compress

редактировать
сжать / распаковать
Автор (ы) исходного текста Спенсер Томас
Первоначальный выпускфевраль 1985 г.; 35 лет назад (1985-02)
Операционная система Unix, Unix-like, IBM i
Тип Команда
compress.Z
Расширение имени файла .Z
Тип интернет-носителя application / x-compress
РазработаноСпенсером Томасом
Тип форматасжатие данных

сжатие - это программа сжатия оболочки Unix , основанная на алгоритме сжатия LZW. По сравнению с более современными утилитами сжатия, такими как gzip и bzip2, сжатие выполняется быстрее и с меньшим использованием памяти за счет значительно более низкой степени сжатия .

uncompress восстанавливает файлы в исходное состояние после того, как они были сжаты с помощью утилиты сжатия. Если файлы не указаны, стандартный ввод будет распакован в стандартный вывод.

В следующей версии POSIX и Single Unix Specification планируется, что алгоритм DEFLATE будет использоваться в gzip формат должен поддерживаться этими утилитами.

Содержание

  • 1 Описание программы
  • 2 История
  • 3 Специальный формат вывода
  • 4 См. также
  • 5 Ссылки
  • 6 Внешние ссылки

Описание программы

Файлы, сжатые с помощью сжатия, обычно имеют расширение ".Z" (смоделировано по образцу более ранней программы pack, в которой использовалось расширение ". Z"). Большинство программ tar будут передавать свои данные через сжатие, если задана опция командной строки «-Z». (Сама по себе программа tar не сжимает; она просто хранит несколько файлов в одном ленточном архиве.)

Файлы можно вернуть в исходное состояние с помощью функции uncompress. Обычное действие при распаковке - это не просто создание несжатой копии файла, но также восстановление метки времени и других атрибутов сжатого файла.

Для файлов, созданных с помощью сжатия в других системах, uncompress поддерживает сжатие от 9 до 16 бит.

История

Алгоритм LZW, используемый в compress, был запатентован Исследовательским центром Сперри в 1983 году. Терри Велч опубликовал статью IEEE о алгоритма в 1984 году, но не упомянул, что он подал заявку на патент на алгоритм. Спенсер Томас из Университета Юты взял эту статью и реализовал compress в 1984 году, не осознавая, что на алгоритм LZW подана заявка на патент. Формат изображения GIF также включал сжатие LZW таким образом, и Unisys позже потребовала лицензионных отчислений за реализацию GIF. Джозеф М. Орост возглавлял группу и работал с Томасом и др. создать «финальную» (4.0) версию compress и опубликовать ее как бесплатное программное обеспечение для группы net.sources USENET в 1985 году. США Патент 4558302 был выдан в 1985 году, и именно поэтому compress нельзя было использовать без выплаты лицензионных отчислений компании Sperry Research, которая в конечном итоге была объединена с Unisys.

compress не пользуется популярностью у определенных групп пользователей, потому что он использует алгоритм LZW, на который распространяется патент Unisys - из-за этого gzip и bzip2 возросла популярность в операционных системах на базе Linux благодаря их альтернативным алгоритмам, а также лучшему сжатию файлов. Однако compress продолжает присутствовать в системах Unix и BSD, а команды compress и uncompress также были перенесены на IBM i операционная система.

Срок действия патента LZW в США истек в 2003 году, так что теперь он находится в общественном достоянии в Соединенных Штатах. Все патенты на LZW по всему миру также истекли (см. Формат обмена графическими данными # Unisys и исполнение патентов LZW ).

В следующей версии POSIX и Single Unix Specification планируется, что алгоритм DEFLATE будет использоваться в gzip формат, поддерживаемый этими утилитами.

Специальный выходной формат

Выходной двоичный файл состоит из групп бит. Каждая группа битов состоит из кодов с фиксированным количеством битов (9-16). Каждая группа (кроме последней) должна быть выровнена по количеству бит, умноженному на 8, и дополнена нулями справа. Последняя группа должна быть выровнена по 8 и дополнена нулями. Вы можете найти дополнительную информацию в ncompress issue.

. Например, вы хотите вывести 10 9-битных кодов, а затем вывести 5 10-битных кодов. У вас есть 2 группы битов: 100 бит и 50 бит. Первая группа должна быть выровнена по 72 и дополнена нулями справа. Вторая группа должна быть выровнена по 8 и дополнена нулями справа. Вам нужно вывести 100 бит, затем 44 нулевых бита, затем 50 бит, затем 6 нулевых бит.

На самом деле это ошибка. LZW не требует выравнивания. Эта ошибка является частью оригинального UNIX compress, ncompress, gzip и даже порт Windows. Он существует более 35 лет. Все файлы application / x-compress были созданы с использованием этой ошибки. Поэтому мы должны включить его в выходную спецификацию.

Некоторые реализации сжатия записывают случайные биты из неинициализированного буфера как биты выравнивания. Нет гарантии, что биты выравнивания будут нулями. Таким образом, с точки зрения 100% совместимости декомпрессор должен просто игнорировать значения битов выравнивания.

См. Также

Ссылки

Внешние ссылки

Последняя правка сделана 2021-05-15 08:23:19
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте