如何在i手机中压缩字符串
像 “AmfkF04njgfdlnre4wp [fnv4s / sif03jgndlkrjrtyuiocvbnjm78dcfghjk89tgb dfgyhuic89vbnyhncvghj8ujmokjnfgbijk98nfgh0978njvcg9h08065yejktgb45ncvghyuitg45hnmpokjnb65yhjcvgf4354g3hjok / mnbcfghjkuh45jcfgh45dfv23bn”(200个charecters)
更短的发送短信
如果我发送需要发送2条短信我需要的短信,假设1条短信只能发送170个字符 通过压缩文本以适应1条短信,只发送1条短信。
我只是希望字符串更短以便于发送,压缩后可能无法读取。 但解压后需要相同。
我尝试阅读this,但它对我没有任何帮助。
谢谢。答案 0 :(得分:2)
如果您希望jfghirehgirl
表示Hello world 5555 hello world google
,那么您可以使用哈希或字典:
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: @"Hello world 5555 hello world google", @"jfghirehgirl", nil];
然后,查找jfghirehgirl
将为您提供原始更长的字符串。
基于经典替换的压缩。
如果你想进行算法转换,gzip就是最易于访问的通用压缩算法。它也恰好被大多数常见协议“在线上”支持。鉴于缺乏背景,很难说更多。
好的 - 最后 - 一个具体的问题:
像 “AmfkF04njgfdlnre4wp [fnv4s / sif03jgndlkrjrtyuiocvbnjm78dcfghjk89tgb dfgyhuic89vbnyhncvghj8ujmokjnfgbijk98nfgh0978njvcg9h08065yejktgb45ncvghyuitg45hnmpokjnb65yhjcvgf4354g3hjok / mnbcfghjkuh45jcfgh45dfv23bn” (200个字符)
看起来非常像你在键盘上撞击。即那里没有信号;这是白噪声。就其本质而言,白噪声不会压缩。
果然,复制并在终端中执行此操作:
pbpaste | gzip --best -f | wc -c
121
收益121个字符。你可能会认为200 - > 121是适当的压缩。它不是;这只是压缩字符的位数。由于SMS具有有限的字符集,因此无论如何都不能使用结果。因此,您需要使用类似base64的编码将其编码回ASCII。
即:
pbpaste > /tmp/foo
python
>>> x = file('/tmp/foo','r').read()
>>> len(x)
121
>>> y = b64encode(x)
>>> len(y)
164
164个字符。不错;甚至可以使用(暂时不能在iPhone上以编程方式读取或编写SMS消息,但用户可以复制/粘贴)。
所以 - gzip,然后base64编码是给出设计信号的具体答案。如果信号更像您要发送的真实信号,则可以给出更好的答案。