有没有办法区分GUID和一个随机数?

时间:2009-11-20 15:55:04

标签: debugging random guid undefined-behavior

在调试模糊的代码缺陷时,能够区分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的其他迹象是什么?

2 个答案:

答案 0 :(得分:1)

GUID是十六进制的,因此您可以检查包含哪些字符(即“X”,“Y”等无效)

检查维基百科的定义,你可能会在那里找到更多的想法。

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

答案 1 :(得分:1)

除了GUID版本(0100)之外,还有一种称为GUID变体的东西。这将是八位字节8中的2位(10)。根据定义,v4 GUID的剩余位a是随机的。