2013-07-24 4 views
0

Во время отладки, почему это происходит, когда вы смотрите на объект GUID, есть странные переменные внутри непубличных участников? Это то, что показано в моей отладке для:C# GUID Странные значения

guid={7b15cd1-69f3-e2111-bd64-001dd8b82a4f} 

_a = 2065026481 
_b = 27123 
_c = -7663 
_d = 189 
_e = 100 
_f = 0 
_g = 29 
_h = 216 
_i = 184 
_j = 42 
_k = 79 
+1

Почему, по вашему мнению, эти значения странные (если они частные)? –

+0

Ум .. возможно, они имеют какое-то отношение к реализации структуры Guid? (... и закрыть) – spender

+0

Не стесняйтесь узнавать: http://www.jetbrains.com/decompiler/ – spender

ответ

7
guid={7b15cd1-69f3-e2111-bd64-001dd8b82a4f} 

_a = 2065026481 // = 7b15cd1 
_b = 27123 // = 69f3 
_c = -7663 // = e2111 
_d = 189 // = bd 
_e = 100 // = 64 
_f = 0 // = 00 
_g = 29 // = 1d 
_h = 216 // = d8 
_i = 184 // = b8 
_j = 42 // = 2a 
_k = 79 // = 4f 
2

Это не так уж и странно. Запустите калькулятор Windows, запустив файл Calc.exe. Нажмите «Просмотр + Программист», чтобы выбрать встроенный пользовательский режим StackOverflow. Введите «2065026481» и нажмите переключатель «Hex». Обратите внимание на сходство с первой частью значения {guid}.

Повторитесь для других частей, вы увидите матч.

Шестнадцатеричный - это способ программиста считать 16 пальцами вместо 10. Наличие 16 пальцев намного лучше подходит для способа создания компьютеров. Они используют мощность 2, а не 10. Только единицы и нули, одна шестнадцатеричная цифра охватывает 4 бита.

. Больше сделать вывод, что Guid является не просто случайное число. Он состоит из частей. Эти части имеют смысл, вы можете прочитать RFC 4122, если хотите дойти до конца. Это хорошая идея, если вы хотите узнать, как работает машина. Каждый плотник должен знать, как работает молот. Но сначала они должны понять гвоздь, я рекомендую this book знать, как выглядит гвоздь.

0

Я не знаю всего отображения GUID, но эти внутренние переменные представляют собой только части всего GUID. Разница в том, что отладчик показывает _a, _b и т. Д. В базе 10, тогда как GUID отображается шестнадцатеричным.

В вашем примере, если мы посмотрим на последние две части, они сопоставляются с последними 4 цифрами направляющей.

_j = 42 (Dec) 2a (Hex) 
_k = 79 (Dec) 4f (Hex) 
Смежные вопросы