Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кодирование информации 
:(
    Опции темы
асд1
  Дата 17.7.2013, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 18.6.2013

Репутация: нет
Всего: нет



Здравствуйте.

К примеру, у меня есть 3 000 000 цветов, занесенных в текстовый файл.

Например, #000000, #023022 и.т.д... (Конечно без решетки)

Как мне представить каждый цвет двумя или, самое большее, тремя символами?
Чтобы, например, компьютер видел "%1" и понимал, что это #000000?

PM MAIL   Вверх
Mirkes
Дата 17.7.2013, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 4
Всего: 17



Вообще-то, множество предусматриваемых вами кодов слабовато. Если взять 256 символов и три знакоместа, получим 16 млн. Вроде хватает, то текст будет содержать всякую лабуду типа "№;%" - это один код, пробел кстати тоже использован.
Можно узнать, в чем суть задачи?
Если в экономии места, то пишите бинарный файл, как раз три байта на цвет и получится. Причем не придется тратиться на разделители.


--------------------
Mirkes
PM MAIL   Вверх
_Y_
Дата 18.7.2013, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Подсчет ИМХО простой. 

Для записи N вариантов (цветов в вашем случае) M символами полуается, что каждый символ должен нести количество информации равное корню M-ной степени из N (дробный результат округлять к большему). То есть, чтобы закодировать 3 миллиона комбинаций двумя символами нужно, чтобы каждый символ имел 1733 вариантов. Для трех-символьной кодировки надо уже только 145 комбинаций на символ. 

Поскольку интересует именно двоичное представление, то в первом случае придется использовать по 2 байтa на символ, а во втором по 1 байту (что, собствено и делается обычно).

Поскльку двухбайтная запись позволяет записать 65536 вариантов, избыточность здесь уж слишком велика. Поэтому можно, конечно, ограничиться меньшим количеством бит на символ. Достаточно 11 бит (2048 вариантов). Но в этом случае придется писать вестьма комберзонный код записи файла - каждый байт придется обрабатывать по-разному в зависимости от его номера в файле.

Поэтому удобрее всего будет 12 битная кодировака (4096 вариантов на символ). В этом случае на экране у Вас будут двусимвольные обозначения, а в файле обычные трехсимвольные.

ЗЫ: По-любому значков для разных цветов придется изобретать немеряно (рекомендую китайские иероглифы smile ), но Вам виднее зачем это надо.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0375 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.