Воскресенье, 17 Ноября 2024, 15:46

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Алгоритм Хаффмана
vasua99Дата: Вторник, 03 Апреля 2012, 20:04 | Сообщение # 1
GNU follower
Сейчас нет на сайте
Подскажите пожалуйста в виде чего можно представить бинарное дерево. П.с может вопрос глупый?)

Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
VinchensooДата: Вторник, 03 Апреля 2012, 20:10 | Сообщение # 2
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Code
Struct Tree
{
Tree* left;
Tree* right;
int data;
};


vasua99Дата: Среда, 04 Апреля 2012, 13:49 | Сообщение # 3
GNU follower
Сейчас нет на сайте
да, как я до такого не додумался)), сейчас возникла еще одна проблемма есть,я думаю если зашифрованный файл представить так:
Code


union bin_ch
{
   struct
   {
     char ch;
   };
   bool b_ch[8];
};


Но я знаю,что так работать не будет,т.к булевый тип занимает 1 байт,вопрос: как можно зашифровать файл,если минимальной единицей доступа является 1 байт,а записать надо меньше байта обычно,т.к если писать побитово то прийдется сдвигать готовые блоки,но как?


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
НохчиДата: Среда, 04 Апреля 2012, 14:53 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Quote (vasua99)
а записать надо меньше байта обычно

Записать меньше байта нельзя.


Многие вопросы по Windows отпадут, если посмотреть тут
vasua99Дата: Среда, 04 Апреля 2012, 15:51 | Сообщение # 5
GNU follower
Сейчас нет на сайте
можно:
int SetBit(int &arg,int n)
{
arg |= (1 << n)
}

Но вопрос как это все решить,т.к в реультате буква А например может занимать 2 бита,а буква В 3 бита


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
НохчиДата: Среда, 04 Апреля 2012, 16:11 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Речь о записи в файл шла.
Quote (vasua99)
Но вопрос как это все решить,т.к в реультате буква А например может занимать 2 бита,а буква В 3 бита

Бред какой-то придумал.


Многие вопросы по Windows отпадут, если посмотреть тут
vasua99Дата: Среда, 04 Апреля 2012, 16:17 | Сообщение # 7
GNU follower
Сейчас нет на сайте
Я знаю))))просто тут не обьяснишь если тот не знает алгоритм)))короче поищю исходники и гляну как там реализованно

Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
TimKruzДата: Среда, 04 Апреля 2012, 17:33 | Сообщение # 8
старожил
Сейчас нет на сайте
Quote (vasua99)
как можно зашифровать файл,если минимальной единицей доступа является 1 байт,а записать надо меньше байта обычно,т.к если писать побитово то прийдется сдвигать готовые блоки,но как?

Считывать по байтам, разбивая их на биты с помощью битового сдвига, обрабатывать как тебе нужно, потом опять складывать и записывать в файл по тем же байтам. Например, читаем первый байт, из которого нам нужно 2 первых бита, тогда делаем побитный сдвиг вправо на 6 бит, получаем байт с шестью однозначно выключенными битами и двумя значащими - нулевым и первым. Для получения, например, трёх бит из середины, можно сдвинуть биты влево, а потом вправо на соответствующее число бит (зависит от положения нужных нам бит).
Замечу, что есть четыре типа сдвига. Тебе потребуется самый простой - логический.
Вот только записать в файл число бит, не кратное 8 всё равно никак не получится, но заполнение всего 1-7 бит лишними нулями - это не страшно.

***
Quote (Нохчи)
Бред какой-то придумал.

На Википедии почитай.




Сообщение отредактировал TimKruz - Среда, 04 Апреля 2012, 17:38
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг