Важная информация

User Tag List

Показано с 1 по 5 из 5

Тема: Алгоритм компрессора ZX0 (ZX5, ZX2)

  1. #1
    Member Аватар для BelaLugoci
    Регистрация
    13.01.2022
    Адрес
    г. Новосибирск
    Сообщений
    90
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    8 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Алгоритм компрессора ZX0 (ZX5, ZX2)

    Привет народ, сжатие данных это из области моего хобби и я люблю почитать и покодить на эту тему. Сделал свой алгоритм сжатия на тему LZSS и параллельно узнал про несколько вариантов кодера ZX*, автор на гитхабе с одной стороны пишет как именно он кодирует, с другой - есть вопрос, который я не могу сам понять, может кто-то есть кто понимает о чем речь. Привожу цитату с гитхаба:

    Скрытый текст

    File Format
    The ZX0 compressed format is very simple. There are only 3 types of blocks:

    Literal (copy next N bytes from compressed file)
    0 Elias(length) byte[1] byte[2] ... byte[N]
    Copy from last offset (repeat N bytes from last offset)
    0 Elias(length)
    Copy from new offset (repeat N bytes from new offset)
    1 Elias(MSB(offset)+1) LSB(offset) Elias(length-1)
    ZX0 needs only 1 bit to distinguish between these blocks, because literal blocks cannot be consecutive, and reusing last offset can only happen after a literal block. The first block is always a literal, so the first bit is omitted.

    The offset MSB and all lengths are stored using interlaced Elias Gamma Coding. When offset MSB equals 256 it means EOF. The offset LSB is stored using 7 bits instead of 8, because it produces better results in most practical cases.
    Если кому-то английский не нравится:
    Формат файла
    Формат сжатия ZX0 очень прост. Существует всего 3 типа блоков:

    Буквальный (копирует следующие N байт из сжатого файла)
    0 Elias(length) byte[1] byte[2] ... byte[N]
    Копировать с последнего смещения (повторить N байт с последнего смещения)
    0 Elias(length)
    Копировать с нового смещения (повторить N байт с нового смещения)
    1 Elias(MSB(offset)+1) LSB(offset) Elias(length-1)
    ZX0 требуется всего 1 бит, чтобы различать эти блоки, потому что литеральные блоки не могут быть последовательными, а повторное использование последнего смещения может произойти только после литерального блока . Первый блок всегда является литералом, поэтому первый бит опускается.

    Смещение MSB и все длины сохраняются с использованием чересстрочной развертки Гамма-кодирование Элиаса. Когда смещение MSB равно 256, это означает EOF. Смещенный LSB хранится с использованием 7 бит вместо 8, поскольку в большинстве практических случаев это дает лучшие результаты.
    [свернуть]


    Интересует вопрос по тому, что здесь Эйнар понимает под смещением?
    Atari 65XE / Atari XEGS / Commodore 64C

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Veteran Аватар для zebest
    Регистрация
    11.01.2008
    Адрес
    Ладошкино
    Сообщений
    1,676
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    324
    Спасибо Благодарностей получено 
    222
    Поблагодарили
    175 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Может это спросить у самого автора??
    https://spectrumcomputing.co.uk/foru...pic.php?t=4119
    Profi v3.2 -=- Speccy2010,r2

  4. #3
    Member Аватар для BelaLugoci
    Регистрация
    13.01.2022
    Адрес
    г. Новосибирск
    Сообщений
    90
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    8 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zebest Посмотреть сообщение
    Может это спросить у самого автора??
    Понял, спасибо за наводку.
    в выдаче поисковиков этот ресурс не светится, зато теперь моя тема на первой странице гугла, может так люди будут находить.
    Atari 65XE / Atari XEGS / Commodore 64C

  5. #4
    Member Аватар для BelaLugoci
    Регистрация
    13.01.2022
    Адрес
    г. Новосибирск
    Сообщений
    90
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    8 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zebest Посмотреть сообщение
    Может это спросить у самого автора??
    Спасибо еще раз, продуктивно пообщались с автором.
    Atari 65XE / Atari XEGS / Commodore 64C

  6. #5
    Veteran Аватар для zebest
    Регистрация
    11.01.2008
    Адрес
    Ладошкино
    Сообщений
    1,676
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    324
    Спасибо Благодарностей получено 
    222
    Поблагодарили
    175 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не за что)) Это мелочи, технические форумы для того и нужны, чтобы в чем-то помогать друг другу. ( а не собачиЦЦа, что впрочем, иногда, тоже имеет место быть
    Компрессорами пользуюсь, для своих подделок, zx0 тоже пробовал, первые версии. Обычно сжимаю оооочень разреженные файлы, иногда в 20-30 раз сжимаются, удобно.
    Profi v3.2 -=- Speccy2010,r2

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Алгоритм календаря
    от Mick в разделе Программирование
    Ответов: 13
    Последнее: 02.05.2012, 08:34
  2. Алгоритм текстового Quest'a
    от ALKO в разделе Программирование
    Ответов: 11
    Последнее: 23.12.2010, 00:47
  3. Алгоритм и..
    от Пётр в разделе Программирование
    Ответов: 4
    Последнее: 21.05.2008, 21:52
  4. сложнопонимаемый алгоритм
    от psb в разделе Программирование
    Ответов: 35
    Последнее: 27.05.2006, 01:42

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •