2011-02-15 3 views
5

У меня есть следующий Guid:Почему бинарная Guids отличается от обычного представления

AAB13E97-449B-4D5B-BDE2-AC479C31B782 

Использование System.Guid + DbLinq + SQLite для хранения его следующее поле добавляется в базу данных.

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

(Штрихи добавил для ясности)

Я могу видеть, что последние 8 байт в том же порядке, и первые 3 группы поменялись местами, но я не понимаю, почему.

ответ

4

Глядя на Wikipedia's article on the subject он говорит:

Data4 хранит байты в том же порядке, что и отображается в GUID кодировкой (смотри ниже), но остальные три поля перепутаны на системах прямой порядок байтов (для например, процессоры Intel).

Так я заключаю:

  • Это происходит независимо от СУБД или система, используемая
  • Это зависит от процессора архитектурных сооружений
  • Это дизайн

Таким образом, вопрос остается:

Почему на e они разработали его так?

+5

«Почему же они спроектировали его так?» - Я предполагаю, что первоначально идентификаторы V1 GUID содержали MAC-адрес в поле Data4. Исторически big-endian был определен как стандартный сетевой порядок байтов и использовался во многих связанных с сетью вещах, таких как IP-адреса, MAC-адреса и т. Д. –

+1

Из Википедии: «Версия 1 (MAC-адрес) Концептуально оригинал (версия 1) для UUIDs заключалась в том, чтобы объединить версию UUID с MAC-адресом компьютера, который генерирует UUID, и с числом 100-наносекундных интервалов с момента принятия григорианского календаря на Западе. Эта схема была подвергнута критике тем, что она недостаточно «непрозрачна»; он показывает как личность компьютера, сгенерировавшего UUID, так и время, в которое он это сделал ». –

Смежные вопросы