質問

私はほとんど関心がなかセキュリティやものと自然が必要な機能(s)がより"圧縮"/"解凍"の文字列になります。また、Base64ですが、それは大きな問題のサイズは文字列です。私はこのハフマンものの、そのなかでもとく(下のメモリでは、整数).

言いたい任意の文字列'djshdjkash'符号化するその他の文字列'dhaldhnctu'.できるか、新しい文字列の長さ以下のオリジナルです。

これとJavascriptで行われている?

  • 明し、先ほど言ったようにセキュリティの目的は、偽装の文字列を続けて長期間を短縮します。Base64でエンコードの例では、この文字列が長くなります。ROT13はっきりがなをカバーすべてASCII文字だけます。
役に立ちましたか?

他のヒント

あなたはコードしない、圧縮を必要としています。一般的にエンコードするビットが追加されます。 Googleの "文字列圧縮アルゴリズム。"

それが唯一のアルファに影響を与えるため、ROT13が出ているので、

、なぜちょうど大きな文字セット間で何かを実装していません。あなたの全体の印刷可能な文字セットと異なる順序で同じ文字を含むfrom配列を含む文字のto配列を設定します。

そして、それはfrom配列でいた場合、あなたの文字列のすべての文字のために、to配列における同等の位置で置き換えます。

このすべての利回り圧縮なししかし、すべての要件(短いか同じ長さ、変装した文字列)を満足させます。

擬似コードには、何かます:

chfrom = "ABCDEF..."
chto   = "1$#zX^..."
def encode(s1):
    s2 = ""
    foreach ch in s1:
        idx = chfrom.find(ch)
        if idx == -1:
            s2 += ch
        else:
            s2 += chto[idx]
    return s2
def decode(s1):
    # same as encode but swap chfrom and chto.
私はあなたが圧縮する正確に何か分かりません。それはString.length()で見られるような文字列の長さ(ある場合は、Unicode文字の中に2つのASCII文字を圧縮することができた。だから、hello, world(12文字)のような文字列が)(\u6865\u6c6c\u6f2c\u206f\u6f72\u6c64で6つの文字を可能性があります。あなたはしかし、非常に注意する必要がありますあなたは \uFFFF のような無効な文字を生成しないことを、あなたは常にから戻って行くことができること非圧縮の1に圧縮された文字列ます。

あなたは、文字列リテラルの長さを短くしたい場合は、一方、この方法は完全に間違っています。ですから、文字列を圧縮したいどのような状況の下で明確にしてくださいます。

scroll top