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?
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%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.
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