Konvertieren Sie die GUID in ein numerisches Äquivalent

Ich wurde aufgefordert, eine Liste von Benutzern aus ActiveDirectory zu exportieren und die GUIDs zur Anzeige in ein numerisches Äquivalent zu konvertieren (daher werde ich das nachher wiederholen). Ich habe nach etwas gesucht, aber die meisten Fragen beziehen sich auf das Konvertieren von etwas in eine GUID oder das Konvertieren einer GUID in Int oder etwas Dummes (ich verstehe, dass Ints zu klein sind usw.), was nicht wirklich angemessen ist.

Ich habe das AD-Material sortiert und die Daten exportiert, ich frage mich jedoch, in welchen Datentyp / welches Format die GUIDs konvertiert werden sollen und ob es überhaupt möglich ist. Ich bin nicht wirklich gestört, welcher genaue numerische Typ verwendet wird, solange die Nummer noch "eindeutig" ist (ich verstehe, dass GUIDs nicht wirklich eindeutig sind usw.).

Befinden sich GUIDs im hexadezimalen Format und gibt es einen geeigneten numerischen Typ, in den ich sie zur Anzeige konvertieren kann?

Ich benutze VB.Net und .Net Framework 4. Ich habe versucht, BigInteger zu verwenden, aber das scheint auch in negative Zahlen zu gehen, die ich verwenden werde, wenn ich muss, aber lieber nicht, wenn es etwas passenderes gibt .

Bearbeiten Folgendes habe ich versucht:

Verwenden einer GUID von: f02c7caf-7e5a-491b-9f23-9476174bdda1

Und dieser Code:

Dim Foo As String = (New System.Numerics.BigInteger(adUserDirectoryRecord.Guid.ToByteArray())).ToString

Es kam heraus als: -125127638954164478915246035839554388817

Hinweis: Ich werde dies im CSV-Format ausgeben, sobald ich fertig bin, damit ein anderes Team es aufnimmt und in ein anderes System importiert. Dies ist wahrscheinlich der Grund, warum es eher im numerischen als im alphanumerischen Format sein soll.

LÖSUNG:

Da die numerische GUID nie wieder konvertiert werden muss, war BigInteger die richtige Methode. Die Änderung bestand darin, die Größe des ByteArray zu ändern, um nur positive Werte zu erzwingen:

'Gets the User's GUID from the Active Directory record, converts it to a Byte Array and Resizes it to Force Positive Values Only:
Dim bytGUIDBytes As Byte() = adUserDirectoryRecord.Guid.ToByteArray()
Array.Resize(bytGUIDBytes, 17)

'Converts the User's GUID Bytes into a Numeric Equivalent, and Returns the String version of the Numerical value.
Return New System.Numerics.BigInteger(bytGUIDBytes).ToString

Antworten auf die Frage(2)

Ihre Antwort auf die Frage