2011-04-17 17 views
-2

を圧縮することができは、どのように私は私の携帯電話に文字列を圧縮することができますどのように文字列のiphone

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

のような短いのSMS

に送るため私はSMSを送信する必要がある場合は、1文字を送信することができます170文字だけを想定してください2 SMSは 1 SMSに収まるようにテキストを圧縮してわずか1 SMSを送信します。

文字列を短くして送信しやすくしたい場合は、圧縮した後に文字列を読み取れないことがあります。 ただし、解凍後は同じである必要があります。

私はthisを読もうとしていますが、それは私を助けません。

ありがとうございました。 、そして、

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: @"Hello world 5555 hello world google", @"jfghirehgirl", nil]; 

あなたのオリジナルの長い文字列を与えるまでjfghirehgirl探して:あなたはHello world 5555 hello world googleを意味するjfghirehgirlをしたい場合は

答えて

2

は、その後、あなただけのハッシュや辞書を使用することができます。

古典的な代替ベースの圧縮です。

アルゴリズム変換が必要な場合、gzipは、最も簡単にアクセスできる汎用の圧縮アルゴリズムです。また、ほとんどの一般的なプロトコルでは「ワイヤー上で」サポートされています。文脈の欠如を考えると、もっと言いにくい。


OK - 最後に - 具体的な質問:

のような "AmfkF04njgfdlnre4wp [fnv4s/sif03jgndlkrjrtyuiocvbnjm78dcfghjk89tgb dfgyhuic89vbnyhncvghj8ujmokjnfgbijk98nfgh0978njvcg9h08065yejktgb45ncvghyuitg45hnmpokjnb65yhjcvgf4354g3hjok/mnbcfghjkuh45jcfgh45dfv23bn" (200 charecters)

に見えますあなたがキーボードを叩いたような大変なこと。私。そこには信号がありません。それはホワイトノイズです。ホワイトノイズは、その性質上、圧縮しません。

それをコピーして、端末でこれをやって、案の定:

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メッセージを読んだり作成したりすることはできませんが、コピー/貼り付けはできません。

So-gzipの場合、base64エンコードは、考案された信号が与えられた具体的な答えです。信号があなたが送信しようとしている実際の信号にもっと似ていれば、より良い答えが得られます。

+0

私はjfghirehgirlがHello world 5555 hello world googleを意味したいと思っています。他のデバイスにjfghirehgirlを送信して、Hello World 5555 hello world googleを意味するようにjfghirehgirlを解凍できます。 – MAXZZXAM

+0

これは実際には何も明らかにしませんでした。 gzipのような圧縮アルゴリズムを使用して、両側で共有されている辞書*または*を使って正確にそれを行うことができます。 「任意の入力がワイヤを介して送信された」という意味ですか? – bbum

+0

はい圧縮テキスト "jfghirehgirl"はSMSまたは電子メールで送信でき、受信者は圧縮テキストのみを使用して "Hello world 5555 hello world google"に圧縮解除できます。 – MAXZZXAM

関連する問題