エンコードする必要があるバイナリ データがある場合、どのエンコード スキームを使用しますか?
私は知っています:
- 16 進エンコーディング。非常に単純ですが、非常に冗長で、1 バイトを 2 に拡張します。
- ベース64。最も一般的ですが、それほど冗長ではありませんが、3 バイトを 4 に拡張します。
- ベース85。一般的ではなく、冗長ではありませんが、4 バイトを 5 に拡張します。
一般的に使用されている他のエンコード方式はありますか? もしそうなら、どのような利点と欠点がありますか?
編集: これは、たとえば、任意のデータを Cookie に保存しようとする場合に役立ちます。Cookie はテキストのみを保存でき、任意のデータは保存できないため、何らかの方法で、できれば元に戻す方法で変換する必要があります。さらに、ステートレス サーバーを使用しているため、状態をサーバーに保存できず、識別子を Cookie に入れるだけであるとします。もちろん、これを行う場合、ユーザーがあなたに返しているものが、たとえば署名など、ユーザーに渡したものであることを確認する何らかの方法も必要になります。
また、現在のコンセンサスは base64 が広く使用されているため使用する必要があるということなので、これが私が使用しているものであることも指摘します... 誰かが他のものを使用したかどうか、もしそうならその理由.
編集:誰かがこれに出くわした場合に備えて、Base64 を使用してデータを Cookie に保存する場合は、変更された Base64 実装を使用する必要があります。理由については、この回答を参照してください。