Форум программистов, компьютерный форум CyberForum.ru

LZW - восстановление. LZW GIF. C++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конкатенация строк http://www.cyberforum.ru/cpp-beginners/thread1310702.html
Помогите,пожалуйста,идиоту.Не понимаю как правильно конкатенацию строк написать("сложение" строк) #include <iostream> class STRING { private: char *data; public:
C++ Амбигус между char и bool C:\Projects\Test\Test\test.cpp|36|error: ambiguous overload for 'operator<<' (operand types are 'std::ofstream {aka std::basic_ofstream<char>}' and 'char')| на строку Stream<<*p;, где char *p;, выше std::ofstream &operator << ( std::ofstream &Stream , ... http://www.cyberforum.ru/cpp-beginners/thread1310695.html
Как удалить нужную i-строку и j-столбец из двумерного массива? C++
Как удалить нужную i-строку и j-столбец из двумерного массива?
C++ Удаление единственного элемента односвязного списка
Функция удаляет с конца элементы односвязного списка. Вместо удаления последнего элемента, она должна присвоить элементу значение NULL. В теле main код работает корректно, но в виде функции последнему элементу не присваивается NULL. Как сделать так, чтобы код работал правильно в функции? int del(struct list *first){ if (first==NULL) {printf("Список пуст. Удалять нечего\n"); return 0;} struct...
C++ Как переписать программу с шаблонами классов (имеется просто с классами) http://www.cyberforum.ru/cpp-beginners/thread1310671.html
Есть перераспределение операторов, но не получается полностью переделать, постоянные ошибки. Вот исходный код программы #include "stdafx.h" #include "math.h" #include "stdio.h" #include "iostream" using namespace std;
C++ Массивы, магия Есть код: #include <iostream> #include <cstdlib> int main(void) { int yams; yams = 7; yams = 8; подробнее

Показать сообщение отдельно
lenston
2 / 0 / 1
Регистрация: 12.11.2014
Сообщений: 33

LZW - восстановление. LZW GIF. C++ - C++

25.11.2014, 18:22. Просмотров 270. Ответов 0
Метки (Все метки)

Всем привет.. задача такая:

не могу понять, алгоритм декодирования LZW.. Необходимо как в этом примере
http://habrahabr.ru/post/127083/

НАПРИМЕР
Следующие 7 байт: <b>[84 62 18 2A 10 5D 00]</b>. Нужно перевести их в двоичное представление

[84] 10000100
[62] 01100010
[18] 00011000
[2A] 00101010
[10] 00010000
[5D] 01011101
[00] 00000000

Это коды, просто записанные подряд друг за другом. Но справа налево! Просто отсчитываем нужное количество бит справа и берем это число. А если байт закончился, то к уже частично полученному значению спереди дописываем число (с оставшимся количеством битов) из второго байта. На практике будет понятнее.
Мы узнали, что минимальная длина кода LZW в битах равна 2. Но нужно прибавлять еще 1, т.е. 3. Это означает, что текущий размер кода равен 3 и изначально именно по столько битов будем читать.

Краткое описание алгоритма:
Читаем очередной код.
В словаре, под номером равным коду, берем список индексов. Это готовые индексы цветов.
В словарь добавляется список индексов, взятый из словаря на предыдущем этапе с добавленным первым индексом взятый из словаря на текущем этапе.
<b>(100) 4.</b> В словаре под номером 4 расположен код clear. Значит инициализируем словарь, текущий размер кода устанавливаем равным 3 (в нашем примере конечно же). В файлах побольше этот код встречаться часто.
<b>(000) 0.</b> В словаре под номером 0 находится {0}, это уже готовый индекс цвета (левого верхнего угла). В словарь ничего не добавляем.
<b>(010) 2.</b> В словаре под номером 2 находится {2}. Добавляем {0}+{2} = {0,2} с номером 6 (далее я буду использовать запись покороче: 2:{2}, +6:{0,2})
<b>(001) 1.</b> В словаре под номером 1 находится {1}. Добавляем {2}+{1} = {2,1} с номером 7 (+7:{2,1})

В теории не очень понятно, а как это написать на С/С++ еще проблематичнее ))
Был бы рад, если бы кто-нибудь помог с этим ))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru