2009-11-20 7 views
6

Die Möglichkeit, eine GUID von zufälligen Daten unterscheiden zu können, kann beim Debuggen von Codedefekten hilfreich sein.Gibt es eine Möglichkeit, eine GUID von einer Zufallszahl zu unterscheiden?

Unter Windows hat jede erzeugte GUID Version 4, daher hat sie '4' als erstes Halbbyte des dritten Teils. Wenn also die 16-Byte-Sequenz diese Regel enthält, handelt es sich nicht um eine GUID der Version 4. Zum Beispiel

567E1ECB-EA1C-42D3-A3ED-87A5D824D167 

könnte entweder eine Version 4 GUID oder irgendetwas anderes, aber

567E1ECB-EA1C-02D3-A3ED-87A5D824D167 //third section starts with 0, not with 4 

ist keine Version 4 GUID sein.

Was sind andere Anzeichen dafür, dass ein 16-Byte-Speicherblock eine gültige GUID ist oder nicht?

Antwort

1

GUID sind hexadezimal, so können Sie überprüfen, welche Zeichen enthalten sind (dh ‚X‘, ‚Y‘, etc. sind nicht gültig)

prüfen wikipedia für die Definition und Sie könnten wahrscheinlich mehr Ideen dort herausfinden, .

http://en.wikipedia.org/wiki/Globally_Unique_Identifier

+2

In einem 16-Byte-Speicherblock haben Sie nur Bytes, keine Zeichen, und in seiner hexadezimalen Darstellung (32 Nibbles) haben Sie definitionsgemäß keine davon. – MSalters

1

Neben GUID-Version (0100), gibt es auch die GUID-Variante etwas genannt. Dies wird 2 Bits (10) in Oktett 8 sein. Die verbleibenden Bits a von GUID v4 sind per Definition zufällig.

+0

Meinst du, dass in jeder GUID die ersten 2 Bits in Oktett 8 "10" sein müssen? – sharptooth

+0

Tatsächlich ist die Variante die drei höchstwertigen Bits des Oktetts 8 - und kann "000", "010", "110" oder "111" sein. Der Standard ist jedoch "010" und für GUIDs, die auf die gleiche Weise generiert werden, haben diese Bits immer den gleichen Wert. – configurator

+0

Entschuldigung, ich meinte Oktett 10. – configurator

Verwandte Themen