[an error occurred while processing this directive]
|
у неё незанятые ячейки - нули. И вообще - нулей большинство.
Сделал нечто похожее на macintosh packbits.
mac packbits разжатие (по нему легче объяснить :-) (нюансы могу спутать, но суть такая)
берём из жатого потока байт.
Если он >=0, то
(он+1) байт из входного потока передаём на выход
иначе
(-он) раз дублируем на выход следующий байт
Но теперь для альтер я его перетоптал так:
1) Поскольку повторяются в основном нули - при повторе не передаётся
повторяемый нибл. Выигрыш при кодировании цепочек нулей с лихвой перекрывает проигрыш при кодировании повторяющихся ненулей как неповторяющихся.
2) Работаю не в байтах, а в ниблах (полубайтах). При разжатии 0..7 -скопировать 1..8 ниблов со входа на выход, 8..F - 2..9 раз выдаём на выход нулевой нибл.
Это дело жмёт прошивки циклона лучше, чем его родной сжиматель-разжиметель. И очень просто и компактно реализуется.
E-mail: info@telesys.ru