2009-08-14 10 views

Antwort

10

Es sieht so aus, als gäbe es nur 73 Zeichen, die in einer URL unescaped verwendet werden können. Wenn dies der Fall ist, können Sie die 128-Bit-Nummer in die Basis 73 konvertieren und eine URL mit 21 Zeichen haben.

Wenn Sie 85 gültige Zeichen finden, können Sie eine URL mit 20 Zeichen erhalten.

+0

Also speichern wir 9 Zeichen auf der URL? Ich finde es tatsächlich einfacher zu lesen/rezitieren das hexadezimale als etwas wie 00amyWGct0y_ze4lIsj2Mw – hometoast

+0

@hometoast: Ja, naja, das schien nicht eine Einschränkung für die OP. ;) – retracile

+1

Ich habe eine Ascii85-Codierung verwendet, um ein Guid in 20 ASCII-Zeichen in eine Datenbankspalte zu schreiben. Ich habe den C# -Code veröffentlicht, falls es nützlich ist. Der spezifische Zeichensatz kann für eine URL-Codierung unterschiedlich sein, Sie können jedoch die für Ihre Anwendung geeigneten Zeichen auswählen. Es ist hier verfügbar: http://stackoverflow.com/questions/2827627/what-is-the-most-efficient-way-to-encode-an-arbitrary-guid-into-readable-ascii-3/4211088#4211088 – sheikhjabootie

5

Ein GUID sieht wie folgt aus c9a646d3-9c61-4cb7-BFCD-ee2522c8f633 - das sind 32 Hexadezimalziffern, kodieren jeweils für 4 Bits, also 128 Bits insgesamt

A Base64-Kodierung verwendet 6 Bits pro Symbol, die einfach mit URL-sicheren Zeichen zu erreichen, um eine Zeichenfolge mit 22 Zeichen zu geben. Wie andere bemerkt haben, konnte man mit 73 URLs sichere Symbole und als Basis 73 Nummern codieren, um 21 Zeichen zu geben.

+0

Wie haben Sie das Bit "6 Bit aus einem URL-sicheren Zeichen" abgeleitet? –

+0

Es gibt keine 127 URL-sicheren Zeichen, also angenommen, dass 6 Bits das Maximum wären. –

+0

6 Bits ist base64, auf die die ursprüngliche Verbindung ging. Wenn Sie mehr als 64 Zeichen, z. B. 85, erhalten, können Sie die 128-Bit-Zahl in Basis 85 konvertieren und auf 20 Zeichen reduzieren. Es wird einfach nicht so schön wie base64. – retracile

Verwandte Themen