0

调试时,为什么在查看 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
4

3 回答 3

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
于 2013-07-25T00:00:15.090 回答
2

这并不奇怪。通过运行 Calc.exe 启动 Windows 计算器。点击 View + Programmer 选择内置的 StackOverflow 用户模式。键入“2065026481”并单击十六进制单选按钮。注意与 {guid} 值的第一部分的相似性。

重复其他部分,你会看到匹配。

十六进制是程序员用 16 个手指而不是 10 个手指计数的方式。16 个手指更适合计算机的构建方式。他们使用 2 的幂,而不是 10。只有 1 和 0,一个十六进制数字覆盖 4 位。

从中得出的更大结论是,Guid不仅仅是一个随机数。它由零件组成。这些部分是有含义的,如果你想深入了解,可以阅读RFC 4122 。如果您想了解机器的工作方式,这是一个好主意。每个木匠都应该知道锤子是如何工作的。但是他们必须先了解指甲,我推荐这本书来了解指甲的样子。

于 2013-07-24T23:58:39.867 回答
0

我不知道 GUID 的整个映射,但那些内部变量只是代表整个 GUID 的一部分。不同之处在于调试器以 10 为基数显示 _a、_b 等,而 GUID 以十六进制显示。

在您的示例中,如果我们查看最后两部分,它们会映射到 guid 的最后 4 位。

_j = 42 (Dec) 2a (Hex)
_k = 79 (Dec) 4f (Hex)
于 2013-07-25T00:02:33.060 回答