2011-02-15 8 views
5

tengo el siguiente GUID:binario GUID diferente de la representación habitual

AAB13E97-449B-4D5B-BDE2-AC479C31B782 

Uso System.Guid + DbLinq + SQLite para almacenar se añade el siguiente campo a la base de datos.

973EB1AA-9B44-5B4D-BDE2-AC479C31B782 

(guiones añadido para mayor claridad)

puedo ver que los últimos 8 bytes están en el mismo orden, y los 3 primeros grupos se invierten, pero no entiendo por qué.

Respuesta

4

En cuanto a Wikipedia's article on the subject Dice:

Data4 almacena los bytes en el mismo orden que aparece en la codificación de texto GUID (véase más adelante), pero los otros tres campos se invierten en sistemas little-endian (por ejemplo, CPU Intel).

Por lo tanto, mi conclusión:

  • Esto sucede independientemente de los DBMS o marco utilizado
  • Esto depende de la Architeture procesador
  • Esto es por diseño

Así que la pregunta permanece:

Por qué en e ¿lo diseñaron de esta manera?

+5

"¿Por qué lo diseñaron de esta manera?" - Supongo que originalmente los GUID V1 tenían una dirección MAC en el campo Data4. Históricamente, big-endian se definía como el orden de bytes de red estándar y se usaba en muchos aspectos relacionados con la red, como direcciones IP, direcciones MAC, etc. –

+1

De la Wikipedia: 'Versión 1 (dirección MAC) Conceptualmente, el original (versión 1 El esquema de generación para UUID consistía en concatenar la versión del UUID con la dirección MAC de la computadora que está generando el UUID, y con el número de intervalos de 100 nanosegundos desde la adopción del calendario gregoriano en el Oeste. Este esquema ha sido criticado porque no es lo suficientemente "opaco"; revela tanto la identidad de la computadora que generó el UUID como la hora en que lo hizo. –

Cuestiones relacionadas