2009-08-14 7 views

答えて

10

URL内でエスケープ解除されて使用できる文字は、73のように見えます。その場合、128ビットの数値を基数73に変換し、21文字のURLを持つことができます。

85文字の正式な文字が見つかる場合は、20文字のURLを取得できます。

+0

URLに9文字を保存していますか?私は実際に00amyWGct0y_ze4lIsj2Mwのような何かよりも16進数を読む/暗唱する方が簡単だとわかりました。 – hometoast

+0

@hometoast:うん、それはOPの制約ではないようです。 ;) – retracile

+1

私はASCIIコード20文字でGuidをデータベース列に書き込むためにAscii85エンコーディングを使用しました。私は便利な場合に備えてC#コードを投稿しました。特定の文字セットは、URLエンコーディングでは異なる場合がありますが、アプリケーションに適した文字を選択できます。それはここにあります:http://stackoverflow.com/questions/2827627/what-is-the-most-efficient-way-to-encode-an-arbitrary-guid-into-readable-ascii-3/4211088#4211088 – sheikhjabootie

5

A GUIDこのc9a646d3-9c61-4cb7-bfcd-ee2522c8f633のように見える - 、それは32進数字だ各符号4ビットなので、総

128ビットBASE64符号化が容易であり、シンボル当たり6ビットを使用URLセーフな文字で22文字のエンコードされた文字列を得ることができます。他の人が指摘しているように、73個のURLで安全なシンボルを使用して、73個の数字にエンコードして21個の文字を与えることができます。

+0

"URLセーフなキャラクターから6ビット"ビットをどのように派生させましたか? –

+0

URLに安全な文字が127個含まれていないため、想定される6ビットが最大値になります。 –

+0

6ビットは元のリンク先のbase64です。 64文字以上、たとえば85を得ることができる場合は、128ビットの数値を基数85に変換して20文字にすることができます。それはbase64ほど素晴らしいものではありません。 – retracile