Если вы хотите, чтобы jfghirehgirl
означало Hello world 5555 hello world google
, тогда вы можете просто использовать хеш или словарь:
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: @"Hello world 5555 hello world google", @"jfghirehgirl", nil];
Затем, поиск jfghirehgirl
даст вам исходную более длинную строку.
Классическое сжатие на основе подстановки.
Если вы хотите алгоритмическое преобразование, gzip - это лучший легкодоступный алгоритм сжатия общего назначения.Он также поддерживается "на проводе" большинством распространенных протоколов.Учитывая отсутствие контекста, сложно сказать больше.
OK - наконец - конкретный вопрос:
как "AmfkF04njgfdlnre4wp [fnv4s / sif03jgndlkrjrtyuiocvbnjm78dcfghjk89tgb dfgyhuic89vbnyhncvghj8ujmokjnfgbijk98nfgh0978njvcg9h08065yejktgb45ncvghyuitg45hnmpokjnb65yhjcvgf4354g3hjok / mnbcfghjkuh45jcfgh45dfv23bn" (200 charecters)
Это выглядит ужасноочень похоже на то, как ты стучал по клавиатуре.Т.е. там нет сигнала;это белый шум.Белый шум по самой своей природе не сжимает.
Конечно, копируя это и делая это в терминале:
pbpaste | gzip --best -f | wc -c
121
Возвращает 121 символ.Вы можете подумать, что 200 -> 121 - достойное сжатие.Это не так;это просто биты сжимаемых символов.Поскольку SMS имеет ограниченный набор символов, результат не может быть использован в любом случае.Итак, вам нужно закодировать его обратно в ASCII, используя что-то вроде base64.
Т.е.:
pbpaste > /tmp/foo
python
>>> x = file('/tmp/foo','r').read()
>>> len(x)
121
>>> y = b64encode(x)
>>> len(y)
164
164 символа.Неплохо;возможно, даже пригодный для использования (за исключением того, что вы не можете ни читать, ни составлять SMS-сообщения программно на iPhone, но пользователь может копировать / вставлять).
Итак - gzip, тогда конкретный ответ - это кодировка base64.надуманный сигнал.Лучший ответ мог бы быть дан, если бы сигнал был больше похож на реальный сигнал, который вы собираетесь отправить.