Мобильная архивация Филипп Коряка Хакер, номер #075, стр. 075-114-2 Итак, в первых 32 элементах будем хранить символы кириллицы от "а" до "я". Одну букву кириллицы я намеренно исключил. Благо правила русского языка позволяют мне это сделать. Какую? Догадайся сам (подсказка: эта буква ни разу не встречается на страницах этого журнала). Так же в первых 26 элементах будем хранить символы латиницы от "a" до "z". Т.е. код 2 будет у нас одновременно соответствовать и кириллической букве "б" и латинской букве "b". Знаки препинания мы поместим с 32 позиции в таблице по 41. Цифры от 0 до 9 самое просто тоже будет поместить в начало нашей таблицы и присвоить им коды от 0 до 9, что, в общем, логично. Теперь коды от 0 до 9 соответствуют 3 символам (кириллица, латиница и цифры). Как же определить какой конкретно символ из трех выбрать? Для этого мы будем использовать символы-модификаторы. В основной таблице у нас осталось 22 пустых ячейки. В часть из них мы и поместим модификаторы. Нам потребуются следующие модификаторы: переключатель "кириллица/латиница", переключатель "цифры/не цифры", переключатель "заглавные/строчные" и переключатель "следующая заглавная". Для того, что бы понять, как работают модификаторы, давай закодируем такое сообщение: "Привет Lexa мой НОМЕР - 128. Пока", и посмотрим, что выйдет. [следующая заглавная]привет [кириллица/латиница][следующая заглавная]lexa[кириллица/латиница] мой [заглавные/строчные]номер - [цифры/не цифры]128.[цифры/не цифры] п[заглавные/строчные]ока Аналогия с клавишей Shift на лицо. Первое упоминание модификатора - это нажатие клавиши, второе напоминание - это ее отпускание. На начальном этапе модификаторы установлены в положение "строчные кириллические буквы". Из общего ряда выделяется модификатор "следующая заглавная", он не требует отключения. Преимущество использования его, а не модификатора "строчные/заглавные” очевидно и равно 6 битам. В Unicode такое сообщение занимало бы 33*2 = 66 байт. В нашей кодировке оно занимает 41*6/8=31 байт. Здорово, сжали сообщение больше чем в два раза, но мы не будем останавливаться на достигнутом. Мы задействовали только 46 кодов и у нас в запасе еще 18. Эти 18 кодов позволяют нам использовать для 3 символов не шестибитное, а четырехбитное кодирование. На рисунке показано за счет чего осуществляется переход к 4 битам, и почему таких символов может быть только 3. Каким же символам присвоить такие короткие коды? Ответ очевиден: наиболее часто встречающимся в текстах на русском языке – пробелу (о котором, кстати, мы вообще забыли) и буквам "о" и "е". Проведя несколько экспериментов, легко увидеть, насколько большой выигрыш мы получим за счет использования всего лишь трех четырехбитных кодов. Подготовка Для того чтобы осуществить подобное кодирование SMS-сообщений у себя на телефоне потребуется немного разобраться в программировании на J2ME, поддерживающимся на большинстве современных моделей. А для того, чтобы в нем разобраться необходим некоторый софт. Компилятор, среда и эмулятор. Компилятор – сделает из текста программы готовый мидлет, среда нужна для того, чтобы не париться и не изучать разные ключи компилятора, а также, чтобы не искать текстовый редактор. Эмулятор же нужен для тестирования и запуска полученного в результате компиляции приложения. |