2009-11-20 14 views
6

Ser capaz de distinguir un GUID de datos aleatorios puede ser útil al depurar defectos de código oscuros.¿Hay alguna forma de distinguir un GUID de solo un número aleatorio?

En Windows, cada GUID generado es de la versión 4, por lo tanto, tiene '4' como primer medio byte de la tercera parte. Entonces, si la secuencia de 16 bytes viola esa regla, no es un GUID de la versión 4. Por ejemplo,

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

podría ser un GUID versión 4 o cualquier otra cosa, pero

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

no es una versión de 4 GUID.

¿Cuáles son otras señales de que un bloque de memoria de 16 bytes es o no un GUID válido?

Respuesta

1

de GUID son hexadecimal, por lo que se puede comprobar lo que los personajes están incluidos (es decir, 'X', 'Y', etc., no son válidos)

Comprobar Wikipedia para la definición y que probablemente podría encontrar más ideas allí .

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

+2

En un bloque de memoria de 16 bytes, solo tiene bytes, no caracteres, y en su representación hexadecimal (32 nibbles) por definición no tiene ninguno de esos. – MSalters

1

Además de la versión GUID (0100), también hay algo que se llama la variante GUID. Esto será de 2 bits (10) en el octeto 8. Los bits restantes a del GUID v4 son por definición aleatorios.

+0

¿Quiere decir que en cada GUID los primeros 2 bits en el octeto 8 deben ser "10"? – sharptooth

+0

En realidad, la variante son los tres bits más significativos del octeto 8, y pueden ser '000',' 010', '110' o' 111'. Sin embargo, el estándar es '010' y para los GUID generados de la misma manera estos bits siempre tendrán el mismo valor. – configurator

+0

Lo siento, quise decir el octeto 10. – configurator

Cuestiones relacionadas