Fragen zu GUIDs: Sind sie immer in der Länge festgelegt, und ist die mittlere Zahl immer 4?

8

Ich habe gerade ein paar Millionen GUIDs erzeugt, die sie in einen String verwandelt haben und die Länge bekommen haben ... es war immer das Gleiche. Kann ich bei der Konvertierung in String auf diese feste Länge der GUID zurückgreifen?

Auch, ist die mittlere Nummer der GUID immer "4" wie in diesem Screenshot gezeigt?

    
CHI Coder 007 18.09.2010, 02:46
quelle

3 Antworten

8

Ja, die Länge ist fest und ja, die mittlere Zahl ist immer 4, wenn Sie das Standard-Tostring-Format verwenden. Einige der Bits in GUID (bekannt als UUID fast überall, die nicht Windows ist) sind behoben, um Dinge wie Version usw. anzuzeigen.

Ссылка

BEARBEITEN Ich sollte hinzufügen, dass die "4" nur für Guids gilt, die nach dem Guid.NewGuid-Algorithmus generiert wurden, wie in .NET implementiert. Es gibt nichts, was Sie daran hindern könnte, irgendein beliebiges Byte [16] zu nehmen und es in Guid umzuwandeln. Für die aktuelle Implementierung des Algorithmus in .Net können Sie also nur auf 4 setzen. Wenn Sie Guids von einer anderen Quelle erhalten, können Sie nicht auf die 4. Ein Update auf .Net oder möglicherweise Windows (abhängig davon, ob. Net verwendet seinen eigenen oder Windows-Generator) kann die festen Nummern der GUID

z.B. Der folgende Code funktioniert vollständig und hat nicht die 4 in Position:

%Vor%     
Jim L 18.09.2010, 02:50
quelle
3

Aus der Dokumentation zu Guid.ToString (ohne Parameter):

  

Der Wert dieser Guid, formatiert als   folgt:   xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx   wo der Wert der GUID ist   dargestellt als eine Reihe von Kleinbuchstaben   Hexadezimalziffern in Gruppen von 8, 4,   4, 4 und 12 Ziffern und getrennt durch   Bindestriche. Ein Beispiel für einen Rückgabewert   ist   "382c74c3-721d-4f34-80e5-57657b6cbc27".

Also ist die Antwort "ja", es wird immer gleich lang sein.

Wie für die 4, ist es eine Versionsnummer (nach Ссылка ). Jede GUID, die Sie mit diesem Algorithmus generieren, hat eine 4 an dieser Position, aber ältere GUIDs haben eine 1, 2 oder 3. Zukünftige haben möglicherweise eine 5 oder etwas höhere.

    
Gabe 18.09.2010 03:27
quelle
2

Nein - eine GUID muss keine Typ-4-UUID sein, tatsächlich sind viele GUIDS unter Windows UUIDs von TYPE 1.

Typ 1 nimmt den primären MAC, eine Uhr und eine Sequenz. Dies führt zu "Lecks" -Daten, da alle UUID1, die auf demselben System erstellt werden, dieselbe MAC haben. Das ist der Grund, warum die meisten GUID-Funktionen diese Daten übernehmen und sie in eine Hash-basierte UUID

umwandeln     
Dominik Weber 28.09.2010 20:06
quelle

Tags und Links