2009-11-20 70 views
6

在調試不明確的代碼缺陷時,能夠區分隨機數據的GUID非常有用。有沒有辦法區分一個GUID和隨機數?

在Windows上,每個生成的GUID都是版本4,因此它具有'4'作爲第三部分的第一個半字節。因此,如果16字節序列提示該規則,它不是版本4的GUID。例如,

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

可以是一個版本4 GUID或其他任何東西,但

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

不是一個版本4 GUID。

什麼是16字節內存塊的其他跡象是否是有效的GUID?

回答

1

GUID的是十六進制,所以你可以檢查包括哪些字符(即「X」,「Y」等無效)

的定義檢查維基百科,你可能會發現更多的想法有。

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

+2

在一個16字節的內存塊中,根據定義,你只有字節而不是字符,並且在它的十六進制表示(32個半字節)中沒有這些。 – MSalters 2009-11-23 14:44:48

1

除了GUID版本(0100),這裏還有一些所謂的GUID變種。這將是八位組8中的2位(10).V4 GUID的其餘位a根據定義是隨機的。

+0

你的意思是說,在每個GUID中,八位字節8中的前兩位必須是「10」? – sharptooth 2009-11-23 14:54:57

+0

實際上,變體是八位字節8的三個最重要的位 - 可以是「000」,「010」,「110」或「111」。標準的是'010',而對於以相同的方式生成的GUID,這些位將始終具有相同的值。 – configurator 2010-10-17 23:23:03

+0

對不起,我的意思是八位字節10。 – configurator 2010-10-17 23:23:18

相關問題