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

sha*_*oth 6 random debugging guid undefined-behavior

在调试模糊的代码缺陷时,能够区分GUID和随机数据非常有用.

在Windows上,生成的每个GUID都是版本4,因此它具有'4'作为第三部分的前半个字节.因此,如果16字节序列改变了该规则,则它不是版本4 GUID.例如,

567E1ECB-EA1C-42D3-A3ED-87A5D824D167
Run Code Online (Sandbox Code Playgroud)

可以是版本4 GUID或其他任何东西,但是

567E1ECB-EA1C-02D3-A3ED-87A5D824D167 //third section starts with 0, not with 4
Run Code Online (Sandbox Code Playgroud)

不是版本4 GUID.

16字节内存块的其他标志是或不是有效的GUID?

小智 1

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

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

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

  • 在 16 字节内存块中,只有字节,没有字符,而根据定义,在其十六进制表示形式(32 个半字节)中,这些都没有。 (2认同)