Реферат: Алгоритм сжатия "Unbuffered RLE"

Выходной_поток = Текущий_байт

Предыдущий_байт = Текущий_байт

Счетчик = 0

Конец если

Конец цикла

Как работает декодер

Здесь алгоритм еще проще. При декодировании бывший выходной поток является уже входным потоком, а получающийся выходной поток – это декодированная информация. Так вот, извлекая из входного потока байт, сразу же выбрасываем его в выходной поток. Далее сравниваем текущий байт с предыдущим байтом. Как только они одинаковы, извлекаем из входного потока байт, который является счетчиком повторов. Именно столько раз в выходной поток копируем текущий байт (что был перед счетчиком).

Предыдущий_байт = Взять_байт_из_входного_потока

Выходной_поток = Предыдущий_байт

Бесконечный цикл

Текущий_байт = Взять_байт_из_входного_потока

Выходной_поток = Текущий_байт

Если Текущий_байт = Предыдущий_байт тогда

Счетчик = Взять_байт_из_входного_потока

Цикл Счетчик раз Выходной_поток = Текущий_байт

Конец если

Предыдущий_байт = Текущий_байт

Конец цикла

И на всякий случай привожу ассемблерный код алгоритма декодирования. Код, естественно, рассчитан опять под аппаратное устройство, то есть дешевую плату с микропроцессором (нет памяти, используются три регистра, работа через порты ввода-вывода), которое находится на противоположной стороне транспортной магистрали и занимается банальным декодированием приходящего из транспортной магистрали потока. Тут входной порт микропроцессора подключен к транспортной магистрали, а выходной порт - к чему-нибудь еще, куда затем направляется раскодированный поток.

Decode_Unbuffred_RLE: // -----------------------

//

in al, Number_of_InputPort // AL = первый байт из входного потока

out Number_of_OutputPort, al // записать байт в выходной поток

mov ah, al // этот байт теперь становится предыдущим

//

Get_from_InputStream: // -----------------------

//

in al, Number_of_InputPort // AL = следующий байт из входного потока

out Number_of_OutputPort, al // записать байт в выходной поток

cmp al, ah // равен ли он предыдущему байту?

К-во Просмотров: 246
Бесплатно скачать Реферат: Алгоритм сжатия "Unbuffered RLE"