Frage

ASCII-Codierung, wie viele Zeichen sind in einer GUID da?

Ich habe Interesse an dem Microsoft-Stil, der die geschweiften Klammern und Bindestriche enthält.

War es hilfreich?

Lösung

MSDN :

  

Ein GUID ist ein 128-Bit-Wert aus   eine Gruppe von 8 Hexadezimalziffern,   gefolgt von drei Gruppen von 4   hexadezimale Ziffern jeweils, gefolgt von   eine Gruppe von 12 Hexadezimalzahlen.   Das folgende Beispiel zeigt die GUID   Gruppierungen von hexadezimalen Ziffern in einem   GUID:   6B29FC40-CA47-1067-B31D-00DD010662DA

Wikipedia :

  

Oft Klammern hinzugefügt werden die umschließen   über Format, wie zum Beispiel:

{3F2504E0-4F89-11D3-9A0C-0305E82C3301}

So insgesamt 38 Zeichen in der typischen hexadezimalen Codierung mit geschweiften Klammern.

-Adam

Andere Tipps

TL; DR:. Keine

Als Adam Davis erklärte, der Microsoft-Stil ist HEX-Codierung (mit Klammern und Bindestrichen, um es besser lesbar), die eine Teilmenge von ASCII-Zeichen angezeigt werden kann, unter Verwendung von (0-9 und AF), aber dies ist nicht speziell ASCII-Kodierung .

Ich denke, es ist wichtig, sich daran zu erinnern, dass der Microsoft-Stil GUID der Darstellung nur eine Darstellung einer GUID ist, das ist eigentlich ein 16-Byte-Integralwert (als Micheal Trausch angegeben).

Sie können es auch in verschiedener, kompakter Weise durch das Bytes in einen anderen Zeichensatz Umwandlung (wie ASCII).

Theoretisch können Sie jedes Byte als erweiterte ASCII-Zeichen angezeigt werden (255 Zeichen), mit dem Sie eine GUID als 16 Zeichen Länge Zeichenfolge speichern erlauben würde.

Es wäre nicht sehr gut lesbar sein, obwohl, weil es Leerzeichen (CR, Leerzeichen, Tabulatoren, etc.) und andere Sonderzeichen enthalten würde, so würde dies nur dann sinnvoll, wenn Sie effizient eine GUID in einem nicht-menschlichen speichern möchten lesbares Zeichenformat, beispielsweise in einer Datenbank, die nativ nicht GUID oder schnelle Anpassung von kleinen binären Werten unterstützen: http://en.wikipedia.org/wiki/Extended_ASCII

IMHO die meisten lesbare Art und Weise einer GUID angezeigt kompaktere Base64-Codierung zu verwenden wäre, mit dem Sie es in einer Zeichenfolge mit einer Länge von 22 Zeichen speichern kann, und würde es so aussehen:

7v26IM9P2kmVepd7ZxuXyQ==

Aber wie Jeff Atwood auf seiner Website heißt, Sie können auch eine GUID in eine ASCII85 codierten Zeichenfolge mit 20 Zeichen drücken:

[Rb*hlkkXVW+q4s(YSF0

Für mehr Inspiration finden Sie unter: http://www.codinghorror.com/blog/ 2005/10 / Ausrüstung-unsere-ascii-armor.html

Als Adam aus dem MSDN Zitat erwähnt, UUIDs sind 128-Bit-Werte. Dies bedeutet, dass sie 16 Byte RAM nehmen einen Wert zu halten. Eine Textdarstellung wird 32 Byte (für jedes einzelne Byte zwei Bytes) nehmen, sowie die 4 Bindestriche sowie die beiden Klammern, wenn Sie diejenigen aufnehmen möchten; Diese beläuft sich auf 38 Byte.

Denken Sie daran, dass, wenn Sie UUIDs für die Nutzer Ihrer Software aussetzen, können sie die UUID mit oder ohne die Klammern geben. Wenn Sie den Wert überall sind zu speichern, ist es am besten, es zu speichern, wie die 16-Byte-Binärdarstellung. Wenn Sie mit anderen UUID-Implementierungen sind interoperabel, sollten Sie das grundlegende Text-Format für die Interoperabilität verwenden, da verschiedene Implementierungen verschiedene Dinge auf die Reihenfolge des Bytes zu tun, wenn einen binären UUID-Wert zu speichern.

Die Länge hängt von der Codierung. Sie können die Standard-Kodierungen und Länge dieses Schnipsel erhalten:

public void Main() 
{
    var guid = Guid.Empty;
    Write(guid, "N"); // 32 characters
    Write(guid, "D"); // 36 characters (default)
    Write(guid, "B"); // 38 characters
    Write(guid, "P"); // 38 characters
    Write(guid, "X"); // 68 characters
}    

private void Write(Guid guid, string format) 
{
    var guidString = guid.ToString(format);
    Console.WriteLine("{0}: {1} ({2} characters)", format, guidString, guidString.Length);
}
siehe

die Guid.ToString Methode für Details:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top