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

Шеннон-Фано - C++

Восстановить пароль Регистрация
 
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
04.04.2013, 07:47     Шеннон-Фано #1
Вопрос будет о методе сжатия изображения(bmp) методом Шеннона-Фано.
Допустим я записываю значение, вероятность появления и битовый код в структуру. В итоге получается массив структур. Битовый код я думаю записать в массив типа bool.
В итоге я получаю битовый код каждого значения.
Вопросы: как по битам записать эти коды в файл ведь в файле только байты(1символ 1 байт)?? и вообще алгоритм реализации такой будет верным?? и получится ли вообще записать код в массив типа bool?? Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2013, 07:47     Шеннон-Фано
Посмотрите здесь:

Метод Шеннона фано C++
Метод Шеннона-Фано C++
Метод архивации Шеннона-Фано C++
C++ Алгоритм шеннона фано
Алгоритм Шеннона-Фано C++
C++ Шеннон-Фано
Шеннон-Фано, зацикливается программа C++
Кодирование Шеннона-Фано C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Praktolock
 Аватар для Praktolock
58 / 58 / 0
Регистрация: 29.11.2011
Сообщений: 272
04.04.2013, 08:46     Шеннон-Фано #2
вручную формировать байты и записывать их в файл.

Добавлено через 11 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <tchar.h>
#include <stdio.h>
#include <conio.h>
 
bool bits[12]={1, 0, 0, 0, 0, 0, 0, 1, 0, 0 ,1};
int  bitscount=11;
 
 
 
int main()
{
 unsigned char out=0;
 int index=0;
 
 while(index<bitscount)
 {
  out=0;
  for(int i=0;i<8;i++)
  {
   out=out<<1;
   if(bits[index]&&(index<bitscount))out++;
   index++;
  };
  //тут out содержит байт собранный из восьми первых битов массива
  //соответсвенно пишем в файл out
  _tprintf(_TEXT("%d\n"),out);
 };
 
 
 
_getch();
return 0;    
}
ну вот чисто например, можно так

Добавлено через 36 минут
21 строку лучше так сделать:
C++
1
if((index<bitscount))if(bits[index])out++;
Yandex
Объявления
04.04.2013, 08:46     Шеннон-Фано
Ответ Создать тему
Опции темы

Текущее время: 12:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru