Как я могу сжать строку Iphone - PullRequest
0 голосов
/ 17 апреля 2011

как мне сжать строку в телефоне

, как "AmfkF04njgfdlnre4wp [fnv4s / sif03jgndlkrjrtyuiocvbnjm78dcfghjk89tgb dfgyhuic89vbnyhncvghj8ujmokjnfgbijk98nfgh0978njvcg9h08065yejktgb45ncvghyuitg45hnmpokjnb65yhjcvgf4354g3hjok / mnbcfghjkuh45jcfgh45dfv23bn" (200 charecters)

на Короткое время для отправки с SMS

предполагается, что 1 SMS может быть отправлено только 170 символов, если я отправлю текст, который нужно отправить 2 SMS, я хочу отправьте только 1 SMS, сжав текст до 1 SMS.

Я просто хочу, чтобы строка была короче, чтобы ее было легче отправлять, после сжатия она может быть нечитаемой. но должны быть такими же после распаковки.

Я пытаюсь прочитать это , но это мне не поможет.

спасибо.

1 Ответ

2 голосов
/ 17 апреля 2011

Если вы хотите, чтобы 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.надуманный сигнал.Лучший ответ мог бы быть дан, если бы сигнал был больше похож на реальный сигнал, который вы собираетесь отправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...