2

HTMLとJavascriptを使用して、各ボックスの色の値が異なるグリッドを構築しています。

例: 追跡する値が 25 個ある 5x5 グリッド。ユーザーがこの特定のグリッドを表示したいときに、完全に描画されたグリッドが表示されるように、「グリッド」パラメーターを介してグリッドの情報を送信できるようにしたいと考えています。最初の URL は次のようになります: www.mysite.com?grid=0123401234012340123401234 理想的には、パラメーターは 25 文字未満です。

「0123401234012340123401234」をより小さな文字列に変換するにはどうすればよいですか? 圧縮アルゴリズムを使用するのが最適ですか、それとも 10 進数から 16 進数への変換を使用するだけですか?

4

2 に答える 2

0

各セルに色が含まれている場合、各セルに 3 バイト (アルファ チャネルに変更を含める場合は 4 バイト) が必要であることを意味します。これは、16 進数でエンコードする場合、各セルに 6 つの 16 進数文字が必要であることを意味します。

これは最適ではないため、a-zA-Z0-9which equals 26 + 26 + 10 = 62characters を使用することをお勧めします。次に、2 つの文字 - と _ も使用して、完全な 64 文字を取得します。16 進数を使用すると、2^(24) の可能な値 (アルファ チャネルを使用している場合は 2^32) をエンコードするために 6 文字が必要でした。

64 ベースの文字を使用すると、セルごとに 4 文字しか必要ありません。これについて言及している理由は、a-zA-Z0-9 - と _ が有効な URL 文字であるためです。

もちろん、これはすべて、すべての色を使用していることを前提としています。ドメインを制限すると、セルあたりの文字数を大幅に減らすことができますが、それでも同じエンコード スキームを使用する必要があります。

于 2012-04-30T21:29:50.407 に答える
0

より高いベースを使用することができます。たとえば、30 のようなもの: (123401234012340123401234).toString(30) --> "8i015nb02ib0c4ik". これが正しく機能するには、123401234012340123401234が文字列ではなく数値である必要があることに注意してください。

于 2012-04-30T21:19:21.037 に答える