Алгоритм Хаффмана
|
|
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 |
|
| |